Escolar Documentos
Profissional Documentos
Cultura Documentos
Programao Java
Construo de Interfaces
com Swing (I)
1
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Swing: Caractersticas
? Componentes leves
? No substitui integralmente o AWT
Estende o AWT
Diagramadores & Listeners
? Look & Feel configurvel
Windows, Motif, Metal
? Double-buffering automtico
? Arquitetura MVC
2
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Arquitetura MVC
?O Swing adota uma arquitetura conhecida
como Model-View-Controller (MVC)
Modelo = dados/contedo
? estado de um boto, texto
Viso = aparncia
? cor, tamanho
Controle = comportamento
? reao a eventos
Model atualiza
notifica l
Controller
View atualiza
3
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Hierarquia de Classes
Object
Component
Container
Window
Frame
JFrame
JComponent
JLabel
JAbstractButton
JButton
JToggleButton
...
4
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Estrutura de um JFrame
Camadas do JFrame
? RootPane
gerencia as demais camadas
boto default
? LayeredPane
Contm a menu bar e o ContentPane
Pode conter subcamadas (Z order)
? ContentPane
contm os componentes visveis
? GlassPane
invisvel por default
interceptao de eventos/pintura sobre uma regio 10
5
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Exemplo de JFrame
JFrame f = new JFrame("Teste");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = f.getContentPane();
...
cp.add(...);
...
f.pack();
f.show();
11
12
6
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Hierarquia
JComponent
JAbstractButton
JButton
JMenuItem
JToggleButton
JRadioButton
JCheckBox
13
Classe JRadioButton
? Modela um boto de escolha que pode ser
marcado e desmarcado
? Objetos JRadioButton so tipicamente
organizados em grupos
Um nico boto do grupo pode estar marcado em
um dado momento
14
7
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Mtodos de JRadioButton
JRadioButton(String label)
JRadioButton(String label, boolean state)
boolean isSelected()
void setSelected(boolean state)
15
Classe ButtonGroup
? Cria um escopo de excluso para um
grupo de botes
? Basta criar um ButtonGroup e adicionar a
ele os JRadioButtons que compem o
grupo
16
8
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Mtodos de ButtonGroup
void add(AbstractButton b)
ButtonModel getSelection()
boolean isSelected(ButtonModel m)
void setSelected(ButtonModel m,
boolean state)
17
Exemplo de JRadioButton
JFrame f = new JFrame("Teste");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JRadioButton bm = new JRadioButton("Masculino,true);
JRadioButton bf = new JRadioButton("Feminino");
ButtonGroup bg = new ButtonGroup();
bg.add(bm);
bg.add(bf);
Container cp = f.getContentPane();
cp.setLayout(new FlowLayout());
cp.add(bm);
cp.add(bf);
f.pack();
f.show();
18
9
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Classe JCheckBox
? Modela um boto de escolha que pode
ser marcado e desmarcado
19
Mtodos de JCheckBox
public JCheckBox(String label)
public JCheckBox(String label,
boolean state)
20
10
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Exemplo de JCheckBox
JFrame f = new JFrame("Teste");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCheckBox ci = new JCheckBox("Ingls",true);
JCheckBox ce = new JCheckBox("Espanhol",true);
JCheckBox cf = new JCheckBox("Francs");
Container cp = f.getContentPane();
cp.setLayout(new FlowLayout());
cp.add(ci);
cp.add(ce);
cp.add(cf);
f.pack();
f.show();
21
Elementos de Edio de
Texto
22
11
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Classe JTextComponent
? Classe abstrata que modela o que h de
comum entre diferentes elementos de
edio de texto
23
Elementos de
Edio de Texto
JEditorPane
JTextArea
JTextPane
12
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Classe JTextField
? Cria um campo de edio de texto de uma linha
JTextField()
JTextField(String text)
JTextField(int columns)
JTextField(String text, int columns)
void setColumns(int columns)
25
Classe JPasswordField
? Estende JTextField
? Caracteres digitados no so exibidos
JPasswordField()
JPasswordField(int columns)
JPasswordField(String text, int columns)
char[] getPassword()
void setEchoChar(char c)
26
13
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Classe JTextArea
? Cria um campo de edio de texto com
mltiplas linhas
JTextArea(int rows, int columns)
JTextArea(String text, int rows, int columns)
void append(String t)
void insert(String t, int pos)
void setLineWrap(boolean wrap)
void setWrapStyleWord(boolean word)
27
Classe JTextPane
? Componente de texto que suporta atributos
representados graficamente (styled text)
? Permite o uso de diversas fontes no texto
? Permitea incluso de imagens e de outros
componentes
28
14
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Molduras
29
Bordas
?O Swing permite a criao de bordas
(molduras) envolvendo componentes
? O mtodo setBorder de JComponent
permite emoldurar um componente com
uma borda
30
15
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
Exemplos de Bordas
31
Mais exemplos...
32
16
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
BorderFactory
? As bordas do Swing foram projetadas
para serem compartilhadas
? Ao invs de criar explicitamente uma
instncia de uma das classes de bordas,
deve-se usar um dos mtodos de
BorderFactory para obter uma instncia
compartilhada de um tipo de borda
33
Mtodos de BorderFactory
static Border createLineBorder(Color color)
static Border createEtchedBorder()
static TitledBorder createTitledBorder(String t)
static TitledBorder createTitledBorder(Border b,
String t)
34
17
Java First-Tier: Aplicaes Grupo de Linguagens de Programao - DI/PUC-Rio
JCheckBox
JRadioButton
35
18