Professional Documents
Culture Documents
Paradigmas da Programao
Interfaces Grficas
Componentes Gestores de Posicionamento
Eventos
1/332
Interfaces Grficas
Sumrio Geral
Introduo
Componentes
Introduo Hierarquia de Classes Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
2/332
Interfaces Grficas
Sumrio Geral
Introduo
Componentes
Introduo Hierarquia de Classes Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
3/332
Introduo
Sumrio
Interface do Utilizador
Noo Tipos Consola Grfica (GUI Graphical User Interface)
Java 2D
Histria AWT e Swing
Construo
Editor GUI Programao
Nelson Freire (ISEPDEI-PPROG 2012/13) 4/332
Introduo Noo
Interface do Utilizador
Segmento de cdigo de uma aplicao que permite a sua interao com o utilizador Objetivo Permitir ao utilizador controlar o funcionamento do programa Meios Fornecidos
Entrada
Sada
Utilizador
Nelson Freire (ISEPDEI-PPROG 2012/13) 5/332
Suportada por comandos escritos via teclado Sada Suportada por texto impresso no monitor Grfica ( GUI - Graphical User Interface )
Baseada
Janelas do Sistema Operativo
Sada
Suportada objetos de janelas
6/332
Constituio de um GUI
1/2
Janela
Botes de comando Janela
Boto de Comando Tipos de Objetos Componentes Gestores de Posicionamento Tratadores de Eventos // Layout Managers // Event Listeners
7/332
Constituio de um GUI
2/2
Com representao grfica Para mostrar num monitor Podem interagir com o utilizador Exemplo Botes de comando Gestores de Posicionamento Objetos Gerem a colocao dos componentes na GUI Automaticamente Exemplo Redimensionamento da Janela Tratadores de Eventos Objetos Respondem s solicitaes do utilizador Exemplo Resposta a cliques nos botes de comando
Nelson Freire (ISEPDEI-PPROG 2012/13) 8/332
Boto de Comando
Introduo Principais
Swing
Java 2D AWT
(http://docs.oracle.com/javase/7/docs/index.html)
9/332
Swing
2 Toolkit Java para construir GUIs Introduzido pelo JDK 1.1 No substitui completamente o AWT Construdo por cima do AWT Eventos e Gestores de Posicionamento so AWT
Swing AWT
package javax.swing
Nome comeado por J Em geral
Nelson Freire (ISEPDEI-PPROG 2012/13)
10/332
Construo de um GUI
1/3
11/332
Construo de um GUI
Netbeans - Editor GUI
2/3
Exemplo
Editor GUI do Netbeans Classe JFrame Form Programador
Automaticamente
Simples criar GUI
12/332
Construo de um GUI
3/3
13/332
Interfaces Grficas
Sumrio Geral
Hierarquia de Classes
Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
14/332
Componentes Introduo
Sumrio
Controlos Bsicos
Apresentao de Informao Contentores de Componentes Estilos dos Componente Swing Exemplos
Java
Windows Demos
15/332
Componentes Introduo
Categorias de Componentes
Editvel
No Editvel Contentores de Componentes Nvel Superior Genricos Especiais
16/332
Componentes Introduo
Controlos Bsicos
Classe
JButton
1/3
Representao Grfica
Componente
Boto de Comando
Interesse
Ordenar execuo de comando.
Menu
JMenu
Caixa de Verificao
17/332
Componentes Introduo
Controlos Bsicos
Classe JRadioButton Interesse Escolher uma opo entre mltiplas alternativas.
2/3
Representao Grfica
Caixa de Combinao
JComboBox
Caixa de Listagem
JList
18/332
Componentes Introduo
Controlos Bsicos
Classe JTextField Interesse Introduzir pequena quantidade de texto. Introduzir pequena quantidade de texto, sem mostrar carateres digitados. Introduzir facilmente valor numrico a partir de uma gama de valores; Vantagem: Ocupa pouco espao. Representao Grfica
3/3
JPasswordButton
JSlider
Spinner
JSpinner
Escolher item de uma gama de itens; Vantagens: Ocupa pouco espao; No mostra lista que pode cobrir outros componentes; Utilizador pode editar valor.
19/332
Componentes Introduo
1/3
Escolha de Cor
JColorChooser
20/332
Componentes Introduo
2/3
21/332
Componentes Introduo
3/3
Componente
Escolha de Ficheiro
Interesse
Navegar no sistema de ficheiros e depois escolher um ficheiro/diretrio da lista apresentada ou introduzir o nome de um ficheiro/diretrio. Mostrar tabela de dados; Opcionalmente, utilizador pode editar os dados. Mostrar informao organizada de forma hierrquica.
Tabela rvore
JTable JTree
22/332
Componentes Introduo
JProgressBar JSeparator
Dica
JToolTip
23/332
Componentes Introduo
Contentores
1/4
Interesse Geral Conterem outros componentes Categorias Nvel superior Genrico Especial
24/332
Componentes Introduo
Contentores
2/4
Janela
Caixa de Dilogo Applet
JFrame
JDialog JApplet
Criar janelas.
Criar caixas de dilogo personalizadas. Criar applets com componentes Swing; Applet = programa que pode ser includo numa pgina HTML.
JFrame
JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13)
JApplet
25/332
Componentes Introduo
Contentores
3/4
Painel
Painel de Deslocamento Painel Dividido
JPanel
JScrollPane JSplitPane
Painel de Separadores
Barra de Ferramentas
26/332
Componentes Introduo
Contentores
4/4
Especiais Para uso particular Tipos Componente Janela Interna Classe JInternalFrame Interesse Criar janelas internas numa janela.
JLayeredPane JRootPane
Posicionar componentes num sistema de coordenadas tridimensional (em camadas). Presente em contentores de nvel superior e em janelas internas.
Representao Grfica
27/332
Componentes Introduo
1/2
Java
Windows
Java
Java
Windows
Windows
Nelson Freire (ISEPDEI-PPROG 2012/13) 28/332
Componentes Introduo
2/2
Exemplo: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
3. Reiniciar aplicao para alterao ter efeito Esta propriedade s lida no arranque da aplicao Programada Exemplo
29/332
Componentes Introduo
Demos
// Exemplo: C:\Program Files\Java\ jdk1.6.0_16\demo
1/2
Disponveis Pasta de instalao do Java Exemplo (1/2) SwingSet2 Demo Boto de Comando
30/332
Componentes Introduo
Demos
2/2
31/332
Interfaces Grficas
Sumrio Geral
Introduo
Componentes
Introduo Hierarquia de Classes Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
32/332
Componentes Hierarquia
Sumrio
33/332
Hierarquia de Classes
SWING
is-a
JComponent
Dialog JDialog
JSeparator JFrame
JList
JComboBox JMenuBar AbstractButton JLabel JPanel JTextComponent JTextField JFormattedTextField
JScrollPane
JMenuItem
JMenu
Legenda:
JToggleButton
JRadioButton JCheckBox
JButton
JTextArea JPasswordField
Exerccios PPROG
Classe Abstrata
Classe Instancivel
34/332
Superclasses
Classe Component
1/7
Package
java.awt Declarao public abstract class Component extends Object
No instancivel
Topo da Hierarquia Superclasse Todas as classes de componentes Object
Component
AWT
Caractersticas
Comuns a todos os componentes
Objectivo
Todos os objetos da hierarquia sejam componentes
Superclasses
Classe Component
// para permitir atualizao da imagem do componente quando alterada // relacionada com menus popup // permite o armazenamento dos componentes em ficheiro
2/7
Interfaces Implementadas
ImageObserver MenuContainer Serializable
36/332
Superclasses
Classe Component
3/7
Campos
Para especificar o alinhamento de componentes Mais usados
Declarao Funcionalidade
public static final float TOP_ALIGNMENT = 0.0f; public static final float BOTTOM_ALIGNMENT = 1.0f;
public static final float LEFT_ALIGNMENT = 0.0f; public static final float CENTER_ALIGNMENT = 0.5f;
Constante para especificar alinhamento no topo do componente. Constante para especificar alinhamento em baixo do componente.
Constante para especificar alinhamento esquerda do componente. Constante para especificar alinhamento no centro do componente.
37/332
Superclasses
Classe Component
4/7
Mtodos (1/4)
Relacionados com representao grfica dos componentes Mais usados
Declarao Funcionalidade
Estas dimenses sero automaticamente aumentadas se qualquer uma delas for menor que o tamanho mnimo especificado previamente atravs do mtodo setMinimumSize.
JPanel JMenu
JLayeredPane JMenuItem
JRootPane JMenuBar
JScrollPane
JFrame
JDialog
JFileChooser
JButton
JLabel
JTextField
JList
JComboBox
JCheckBox
JRadioButton
38/332
Superclasses
Classe Component
Declarao Funcionalidade Altera o tamanho preferido do componente; usado pelos gestores de posicionamento.
5/7
Mtodos (2/4)
obj.setPreferredSize(new Dimension(20,40) ); public void setBounds(int x, int y, int width, int height)
(0,0) y x Componente Contentor
JPanel JMenu
JLayeredPane JMenuItem
JRootPane JMenuBar
JScrollPane
JFrame
JDialog
JFileChooser
JButton
JLabel
JTextField
JList
JComboBox
JCheckBox
JRadioButton
39/332
Superclasses
Classe Component
Declarao Funcionalidade
6/7
Mtodos (3/4)
public void setLocation( int x, int y ) Move o componente, colocando o seu canto superior esquerdo no ponto (x,y) do sistema de coordenadas do seu painel contentor; O ponto (0,0) de um componente o seu canto superior esquerdo.
JTextField
JList
JComboBox
JCheckBox
JRadioButton
40/332
Superclasses
Classe Component
Declarao Funcionalidade Especifica a cor de fundo do componente.
7/7
Mtodos (4/4)
public void setBackground( Color bg ) Exemplo: obj.setBackground(Color.RED); public void setForeground( Color fg ) Exemplos: btOK.setForeground( Color.RED ); lblNome.setForeground( Color.red );
JPanel JMenu
JLayeredPane JMenuItem
JRootPane JMenuBar
JScrollPane
JFrame
JDialog
JFileChooser
JButton
JLabel
JTextField
JList
JComboBox
JCheckBox
JRadioButton
41/332
Superclasses
Classe Container
1/2
Objectivo
Tornar componentes em contentores de componentes Package java.awt Object
Declarao
public class Container extends Component { ... } Component Container Componentes Adicionados Registados numa lista
AWT
Classe Instancivel
42/332
Superclasses
Classe Container
2/2
Funcionalidade
Adiciona o componente especificado no final do contentor.
Adiciona o componente especificado ao painel (contentor) na posio dada. Retorna o componente de ndice n do contentor. Retorna todos os componentes do contentor. Remove do contentor o componente comp especificado.
43/332
Superclasses
Classe JComponent
Object Component Container Window
AWT
1/2
Objectivo
Superclasse de todos os componentes Swing Excees Contentores de nvel superior JFrame JDialog Package javax.swing
Frame
JComponent
SWING
Dialog JDialog
JFrame
Declarao public abstract class JComponent extends Container implements Serializable { ... } Classe Abstrata No instancivel
Nelson Freire (ISEPDEI-PPROG 2012/13) 44/332
Superclasses
JComponent
2/2
Mtodos Prprios
Mais usados
Declarao Funcionalidade
Especifica um bordo.
painel.setBorder( BorderFactory.CreateEmptyBorder(10,5,5,10) );
Bordo com Ttulo: painel.setBorder( BorderFactory.CreateTitleBorder("Ttulo") ); public void requestFocus() Exemplos: txtNome.requestFocus(); btOK.requestFocus();
JPanel JMenu JLayeredPane JMenuItem JRootPane JMenuBar JScrollPane JFrame JDialog JFileChooser JButton JLabel JTextField JList JComboBox JCheckBox JRadioButton
45/332
Interfaces Grficas
Sumrio Geral
Introduo
Componentes
Introduo Hierarquia de Classes Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
46/332
Interfaces
Interface SwingConstants
Implementado nas Classes
Declarao
public interface SwingConstants { public public public public public public public public public public public public public public public public public public public }
Nelson Freire (ISEPDEI-PPROG 2012/13) 47/332
static static static static static static static static static static static static static static static static static static static
final final final final final final final final final final final final final final final final final final final
int int int int int int int int int int int int int int int int int int int
CENTER = 0; TOP = 1; LEFT = 2; BOTTOM = 3; RIGHT = 4; NORTH = 1; NORTH_EAST = 2; EAST = 3; SOUTH_EAST = 4; SOUTH = 5; SOUTH_WEST = 6; WEST = 7; NORTH_WEST = 8; HORIZONTAL = 0; VERTICAL = 1; LEADING = 10; TRAILING = 11; NEXT = 12; PREVIOUS = 13;
JLabel
AbstractButton
JTextField
Interfaces
Interface WindowConstants
Implementado nas classes
Declarao
public interface WindowConstants { public static final int DO_NOTHING_ON_CLOSE = 0; public static final int HIDE_ON_CLOSE = 1;
JDialog
JFrame
48/332
Interfaces Grficas
Sumrio Geral
Hierarquia de Classes
Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
49/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 50/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 51/332
Painis
Noo de Painel
// pode armazenar tambm painis
Preciso:
Exemplo
GUI
BorderLayout
Nmero de Cliques: 0
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 53/332
Classe JPanel
Declarao
Classe Instancivel
Objetos so painis Gestor de Posicionamento por Omisso
FlowLayout
Frame
JFrame
SWING
54/332
Classe JPanel
Construtores
Declarao Funcionalidade Cria painel com gestor de posicionamento FlowLayout.
public JPanel() Exemplo: JPanel p1 = new JPanel(); public JPanel( LayoutManager layout )
Exemplo:
JPanel p2 = new JPanel( new BorderLayout() );
55/332
Classe JPanel
Mtodos
56/332
Classe JPanel
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/panel.html
57/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 58/332
JLayeredPane
Interesse
Exemplo
Posicionar Componentes em Camadas Usa 3 dimenso Designaes Profundidade Ordem Z Representao ndice Valor Inteiro
59/332
JLayeredPane
Declarao
Component
Container JComponent JLayeredPane
AWT
SWING
60/332
JLayeredPane
Construtores
Declarao Funcionalidade
Cria painel JLayeredPane.
61/332
JLayeredPane
Mtodos
Prprios Declarao public void moveToBack(Component c) Funcionalidade Move componente c para baixo de todos os componentes da sua camada corrente (posio -1). Move componente c para cima de todos os componentes da sua camada corrente (posio 0). Especifica camada do componente c e a sua posio dentro da camada.
JFrame
JDialog
62/332
JLayeredPane
Adio de Componentes
// profundidade
Y
Nelson Freire (ISEPDEI-PPROG 2012/13)
Z
63/332
JLayeredPane
Camada
Pode conter Mltiplos componentes Cada Componente Ocupa uma posio Pode ser movido para baixo ou para cima de todos os outros
// da mesma camada
64/332
JLayeredPane
65/332
JLayeredPane
Uso do JLayeredPane
66/332
JLayeredPane
Bibliografia
http://download.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
67/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 68/332
JRootPane
Interesse
JDialog
JApplet
69/332
JRootPane
Estutura Interna
Content Pane
Glass Pane Barra de Menus // Opcional
JFrame
JDialog
70/332
JRootPane
Layered Pane
Barra de Menus
Adicionalmente
// opcional
JFrame
JDialog
71/332
JRootPane
Content Pane
JFrame
JDialog
72/332
JRootPane
Glass Pane
Semelhante ao Vidro
Capacidade
Exemplo
Mostrar imagem sobre vrios componentes
JFrame
JDialog
73/332
JRootPane
Barra de Menus
JFrame
JDialog
74/332
JRootPane
Declarao
Component
Container JComponent JRootPane
AWT
SWING
75/332
JRootPane
Construtores
Declarao Funcionalidade
Cria painel JRootPane.
JFrame
JDialog
76/332
JRootPane
Mtodos
Especifica boto que ser acionado quando premida tecla Enter, independentemente de ser, ou no, o foco do teclado.
JFrame
JDialog
77/332
JRootPane
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html
JFrame
JDialog
78/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 79/332
JScrollPane
Interesse
Visualizar Componente Grande rea visualizao < rea componente Deslocando vista Vertical Horizontal Exemplos
Imagem
Caixa de Listagem
JList
80/332
JScrollPane
Declarao
Component
Container JComponent JScrollPane
AWT
SWING
JList
81/332
JScrollPane
Construtores
Declarao Funcionalidade
Cria painel JScrollPane vazio, aonde as barras de deslocamento vertical e horizontal surgiro apenas quando forem necessrias. Cria painel JScrollPane que mostra o componente especificado, aonde as barras de deslocamento vertical e horizontal surgiro sempre que o contedo do componente for maior do que a vista proporcionada.
public JScrollPane() Exemplo: JScrollPane sp = new JScrollPane (); public JScrollPane( Component view ) Exemplo: JList lstNomes = new Jlist(); JScrollPane sp = new JScrollPane ( lstNomes );
JList
82/332
JScrollPane
Mtodos
JList
83/332
JScrollPane
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html
JList
84/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 85/332
Classe Window
Interesse
86/332
Classe Window
Declarao
Package java.awt Declarao public class Window extends Container implements Accessible { }
Object
Component Container Window
AWT
87/332
Classe Window
Mtodos
Prprios
Funcionalidade Modifica tamanho da Janela para mostrar todos os componentes com o seu tamanho preferido; Deve ser chamado aps adio de todos os componentes.
Liberta todos os recursos nativos do monitor usados pela janela, seus sub-componentes.
Chamada setLocationRelativeTo(null) coloca a janela no centro do ecr; Deve ser invocado depois da definio do tamanho da janela ( pack() ou setSize() ).
JFrame
JDialog
88/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 89/332
Classe Frame
Declarao
Package java.awt Declarao public class Frame extends Window implements MenuContainer { }
Object Component
AWT
Container Window
Frame
90/332
Classe Frame
Mtodos
Window
Prprios Mais usados
Declarao Funcionalidade
public synchronized void setExtendedState( int state ) Exemplo para maximizar janela:
setExtendedState(Frame.MAXIMIZED_BOTH);
public void setUndecorated( boolean undecorated) Exemplo Inibe/desinibe moldura da janela; S pode ser chamado quando a janela no est visvel.
JFrame
91/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 92/332
Classe JFrame
Interesse
Representao Grfica
cone
Barra de Ttulo
Botes
Moldura
93/332
Classe JFrame
Declarao
Object
Component
Container Window Frame JFrame
AWT
SWING
94/332
Classe JFrame
Estrutura Interna
Moldura
95/332
Classe JFrame
Painis Prprios
96/332
Classe JFrame
Moldura da Janela
Barra de Ttulo
Formada pelos Componentes (Decoraes) Barra de Ttulo Botes Minimizar Maximizar Fechar cone Limites Janela do tipo JFrame Limites
cone
Botes
Desenhada
Pelo sistema de janelas do sistema operativo Swing Desenha tudo exceto moldura
97/332
Classe JFrame
Construtores
(0,0)
(0,0)
Y Sistema de Coordenadas do Ecr Declaraes Declarao public JFrame() throws HeadlessException public JFrame(String title) throws HeadlessException Funcionalidade Cria janela sem ttulo. Cria janela com ttulo title.
98/332
Classe JFrame
Mtodos
1/2
Declarao
public void setResizable( boolean resizable )
Funcionalidade
setResizable(false) impede utilizador de redimensionar janela.
Classe JFrame
Mtodos
Declarao Funcionalidade
2/2
Prprios (2/2)
public void setDefaultCloseOperation(int operation) Define operao que ocorrer, por omisso, quando utilizador inicia fecho da janela no boto Exemplo: close da moldura; setDefaultCloseOperation(EXIT_ON_CLOSE) Operaes escolha DO_NOTHING_ON_CLOSE // No faz nada HIDE_ON_CLOSE DISPOSE_ON_CLOSE EXIT_ON_CLOSE // Esconde janela // Fecha janela // Termina aplicao
Por omisso, o boto close da janela executa a operao HIDE_ON_CLOSE. Notas Janela e lgica do programa so executados em threads diferentes; Aplicao grfica pode ter o programa em execuo sem GUI.
JDialog
100/332
Classe JFrame
Exemplo
1/4
public class ContadorGUI extends JFrame { public ContadorGUI() { super("Contador de Cliques"); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 270, 150); setLocationRelativeTo(null); setVisible(true); } } public class Principal {
}
} Nelson Freire (ISEPDEI-PPROG 2012/13) 101/332
Classe JFrame
Exemplo
public class DemoJanela extends JFrame {
2/4
public DemoJanela() {
super("Demo Janela"); getContentPane().setBackground( Color.CYAN );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setSize( 300, 200 ); setLocationRelativeTo(null); setVisible(true); } } public class ProgramaPrincipal { public static void main(String[] args) { DemoJanela gui = new DemoJanela();
}
}
102/332
Classe JFrame
Exemplo
3/4
super("Demo");
setUndecorated(true); setSize( 270, 150); setLocationRelativeTo(null); setVisible(true); }
}
public class Principal {
}
Frame
} 103/332
Classe JFrame
Exemplo
4/4
// Exemplo: Imagem de Fundo public class DemoJanela extends JFrame { public DemoJanela() { super("Demo Janela"); PainelFundo pf = new PainelFundo(); add(pf); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 300, 200 ); setResizable(false); setVisible(true);
}
private class PainelFundo extends JPanel { public void paintComponent(Graphics g) { // mtodo reescrito; desenha componentes do painel
super.paintComponent(g); Dimension dimensaoPainel = getSize(); double largura = dimensaoPainel.getWidth(); double altura = dimensaoPainel.getHeight();
ImageIcon i1 = new ImageIcon("isep_logo.jpg"); // imagem guardada na pasta do aplicao Image i2 = i1.getImage().getScaledInstance( (int) largura, (int) altura, Image.SCALE_SMOOTH ); Image i3 = new ImageIcon( i2 ).getImage(); g.drawImage(i3, 0, 0, this);
}
} }
Parmetro especifica algoritmo para redimensionar a imagem. H vrias opes, tais como: SCALE_FAST e SCALE_AREA_AVERAGING Escolha entre rapidez e qualidade da imagem 104/332
Classe JFrame
Resoluo do Ecr
105/332
Classe JFrame
Eventos
Tipos de Evento que Janela pode Gerar (1/2)
Container
1/4
Evento
Key
Rato movido
Rato arrastado (premido + movido) Roda do rato movida
106/332
Classe JFrame
Eventos
Tipos de Evento que Janela pode Gerar (2/2)
Janela abriu Janela fechou
2/4
Evento
107/332
Boto de Comando
Eventos
3/4
Realizado
Objetos de classes que implementem o interface WindowListener
Mtodos de Evento
windowOpened( WindowEvent e)
windowClosed( WindowEvent e)
windowActivated( WindowEvent e) windowDeactivated( WindowEvent e) windowIconified( WindowEvent e) windowDeiconified( WindowEvent e) windowClosing( WindowEvent e) Alguns eventos Classe WindowAdapter implementa interface WindowListener
Exemplo
private class TrataEvento extends WindowAdapter { public void windowClosing( WindowEvent e) { } }
Nelson Freire (ISEPDEI-PPROG 2012/13)
// mtodo reescrito
108/332
Boto de Comando
Eventos
4/4
// objetos designados event listeners Funcionalidade
}
private class TrataEvento extends WindowAdapter {
109/332
Classe JFrame
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html
110/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 111/332
Caixas de Dilogo
Introduo
1/4
Noo de Caixa de Dilogo Componente GUI Separado da janela da aplicao // no contido na janela
Interesse
Ler Dados
Mostrar Informao
Utilizador
Caixas de Dilogo
Introduo
2/4
Caixa Modal
Caixas de Dilogo
Introduo
3/4
Tipos de Caixas de Dilogo Nativas Prprias Nativas JColorChooser JFileChooser JOptionPane Tipo Modal Permite dilogos simples Ex:
Prprias
Para Dilogos
Personalizados Mais complexos Permite Tipo Modeless Classes derivadas da classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 114/332
Caixas de Dilogo
Introduo
4/4
Bibliografia http://download.oracle.com/javase/tutorial/uiswing/components/dialog.html
115/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 116/332
JOptionPane
Classe JOptionPane
Object Component
Container
JComponent JOptionPane Window Frame JFrame Dialog JDialog
117/332
JOptionPane
Interesse
Permitem
Ler
Mostrar
Funcionamento Modal
Informao - Utilizador
118/332
JOptionPane
Caixa de Mensagem
(Mostrar mensagem)
Comuns
Ttulo cone
Caixa de Confirmao
(Utilizador confirmar ao)
Identifica tipo mensagem Mensagem Pode ser contentor JPanel Um ou mais botes de opo
OK Caixa de Entrada
(Ler dados do utilizador) Yes, Cancel, No
Sim, Cancelar, No
Especficos
Caixa de Opo (Utilizador escolher opo Opes personalizadas Podem ser objetos)
Nelson Freire (ISEPDEI-PPROG 2012/13)
TextField
// Entrada Texto
119/332
JOptionPane
1/2
Caixa de Confirmao
JOptionPane.showOptionDialog(...)
Caixa de Entrada
Caixa de Opo
120/332
JOptionPane
2/2
Constantes para especificar parmetros comuns Tipos de mensagem JOptionPane.ERROR_MESSAGE JOptionPane.INFORMATION_MESSAGE JOptionPane.WARNING_MESSAGE JOptionPane.QUESTION_MESSAGE JOptionPane.PLAIN_MESSAGE Tipos de Opes JOptionPane.DEFAULT_OPTION JOptionPane.OK_CANCEL_OPTION JOptionPane.YES_NO_OPTION JOptionPane.YES_NO_CANCEL_OPTION sem cone
Caixa de Mensagem
Caixa de Confirmao
Caixa de Entrada
121/332
JOptionPane
Caixa de Mensagem
Funcionalidade Mostra mensagem e espera pelo OK No retorna nada Mensagem pode ser um componente GUI Declaraes Mtodos
JFrame janela = new JFrame("Biblioteca de Livros"); JOptionPane.showMessageDialog( janela, "Livro guardado com sucesso", Guardar Livro", JOptionPane.INFORMATION_MESSAGE); Nelson Freire (ISEPDEI-PPROG 2012/13) 122/332
JOptionPane
Caixa de Confirmao
1/2
Funcionalidade Mostra mensagem e retorna confirmao Confirmao = inteiro Declaraes Mtodos public static int showConfirmDialog( Component parent, Object message ) public static int showConfirmDialog( Component parent, Object message, String title, int optionType) public static int showConfirmDialog( Component parent, Object message, String title, int optionType, int messageType) public static int showConfirmDialog( Component parent, Object message, String title, int optionType, int messageType, Icon icon )
Nelson Freire (ISEPDEI-PPROG 2012/13) 123/332
JOptionPane
Caixa de Confirmao
2/2
JFrame janela = new JFrame(); int resposta = JOptionPane.showConfirmDialog( janela, "Eliminar Livro?", "Biblioteca de Livros", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) ; If( resposta == OptionPane.YES_OPTION ) livro.eliminar();
124/332
JOptionPane
Caixa de Entrada
TextField Retorna texto inserido pelo utilizador
1/3
ComboBox
Retorna objeto escolhido pelo utilizador Exemplos Livro, Carro, Trabalhador, etc. Objetos so fornecidos num array Tipo de array Pode ser qualquer tipo referncia Exemplo String[] livros = {"Java 6", "Big Java"}; Livro[] livros = { new Livro("Java 6"), new Livro("Big Java") }
125/332
JOptionPane
Caixa de Entrada
2/3
Declaraes Mtodos public static String showInputDialog( Object message ) public static String showInputDialog( Component parent, Object message ) public static String showInputDialog( Object message, Object initialSelectionValue ) public static String showInputDialog( Component parent, Object message, Object initialSelectionValue ) public static String showInputDialog( Component parent, Object message, String title, int messageType ) public static Object showInputDialog(Component parent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue )
Nelson Freire (ISEPDEI-PPROG 2012/13)
JOptionPane
Caixa de Entrada
3/3
Exemplos
JFrame janela = new JFrame(); String autor = JOptionPane.showInputDialog( janela,"Autor do Livro:", "Biblioteca de Livros", JOptionPane.QUESTION_MESSAGE);
JFrame janela = new JFrame(); String[ ] opcoes = {"Java 6", "Big Java", "Core Java"}; String livro = JOptionPane.showInputDialog( janela, "Escolha o Livro:", "Biblioteca de Livros", JOptionPane.PLAIN_MESSAGE, null,
opcoes, opcoes[0]);
127/332
JOptionPane
Caixa de Opo
1/2
Retorna
ndice de array da opo escolhida
Declarao de Mtodo
public static int showOptionDialog( Component parent, Object message, String title,
int optionType,
int messageType,
// irrelevante para options null // personaliza cone // boto que adquire o foco (omisso)
Icon icon,
Object[] options,
Object initialValue )
128/332
JOptionPane
Caixa de Opo
2/2
Exemplo
Caixa de Opo
JFrame janela = new JFrame(); String[] opcoes = {"Opo 1", "Opo 2", "Opo 3", "Opo 4"}; int resposta = JOptionPane.showOptionDialog( janela, "mensagem", "Ttulo", 0, JOptionPane.INFORMATION_MESSAGE,
null,
opcoes,
opcoes[1] );
switch (resposta){ case 0: ; break; case 1: ; break; case 2: ; break; case 3: ; } Nelson Freire (ISEPDEI-PPROG 2012/13) 129/332
JOptionPane
Bibliografia
http://download.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
130/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 131/332
JFileChooser
Gravao de ficheiros
Caixa save permite escolher Pasta para gravar ficheiros Gravao de ficheiros Responsabilidade da aplicao
132/332
JFileChooser
Modal Bloqueia acesso do utilizador janela pai Obriga utilizador a interagir com caixa Para regressar janela pai da caixa
133/332
JFileChooser
H 3 Tipos
Abertura de Ficheiro/Pasta Gravao de Ficheiro Personalizada // para outras tarefas (no abrir/gravar )
// Ex: anexar ficheiro num e-mail ; executar aplicao Caixas de Dilogo JFileChooser
Objetos da classe JFileChooser
134/332
JFileChooser
Declarao da Classe
Object
Component
Container
JComponent JFileChooser
135/332
JFileChooser
Construtores
Declarao Funcionalidade
Constri objeto JFileChooser usando a pasta do utilizador, por omisso;
Mais usados
Esta pasta depende do sistema operativo: Windows: "Meus Documentos" Unix: "Home"
public JFileChooser(String currentDirectoryPath) Exemplo: JFileChooser fc = new JFileChooser("c:/MeuProjecto"); public JFileChooser(File currentDirectory) Exemplo: File f = new File("c:/MeuProjecto"); JFileChooser fc = new JFileChooser( f );
Constri objeto JFileChooser usando a pasta especificada atravs de uma string; Parmetro null especifica pasta do utilizador por omisso. Constri objecto JFileChooser usando a pasta especificada atravs de objeto File; Parmetro null especifica pasta do utilizador por omisso.
136/332
JFileChooser
Mtodos
1/2
Declarao
public int showOpenDialog(Component parent) Exemplo: JFileChooser fc = new JFileChooser(); int resp = fc.showOpenDialog(this); .... public int showSaveDialog(Component parent) Exemplo: // this=janela pai if( resp == JFileChooser.APPROVE_OPTION)
Funcionalidade
Mostra caixa de dilogo JFileChooser para abrir um ficheiro; Tipos de retorno (tipo int): JFileChooser.CANCEL_OPTION
JFileChooser.APPROVE_OPTION
JFileChooser.ERROR_OPTION Mostra caixa de dilogo JFileChooser para gravar ficheiro;
// this=janela pai
JFileChooser.APPROVE_OPTION
JFileChooser.ERROR_OPTION
137/332
JFileChooser
Mtodos
Declarao Funcionalidade
2/2
Prprios (2/2)
Mostra caixa de dilogo JFileChooser com ttulo e boto approve personalizados; Tipos de retorno (tipo int):
JFileChooser.CANCEL_OPTION
JFileChooser.APPROVE_OPTION
JFileChooser.ERROR_OPTION
public File getSelectedFile() Exemplo: JFileChooser fc = new JFileChooser(); int resp = fc.showOpenDialog(this); if( resp == JFileChooser.APPROVE_OPTION) File f = fc.getSelectedFile(); ... // this=janela pai
138/332
JFileChooser
1/2
139/332
JFileChooser
2/2
140/332
JFileChooser
141/332
JFileChooser
Exemplos:
142/332
JFileChooser
143/332
JFileChooser
Bibliografia
http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html
144/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 145/332
Classe Dialog
Declarao
Object
Component
AWT
Container JComponent
JOptionPane
Window
Dialog JDialog
SWING
146/332
Classe Dialog
Construtores
Declarao Funcionalidade
Cria caixa de dilogo invisvel, com a janela pai, ttulo e tipo de funcionamento (true=modal ou false=modeless) especificados. Cria caixa de dilogo invisvel e modeless, com a janela pai e ttulo especificados. Cria caixa de dilogo invisvel e sem ttulo, com janela pai e tipo de funcionamento (true=modal ou false=modeless) especificados.
public Dialog( Frame owner, String title ) public Dialog( Frame owner, boolean modal )
147/332
Classe Dialog
Mtodos
Herdados Component Container Window Prprios Declarao public void setBackground(Color bgColor) Funcionalidade Especifica cor de fundo da caixa de dilogo.
Exemplo:
getContentPane().setBackground(Color.RED);
148/332
Contentores
Sumrio
Classe JLayeredPane
Classe JRootPane
Classe JScrollPane
Superclasse Window
Janelas
Superclasse Frame
Classe JFrame
Caixas de Dilogo
Introduo
Classe JOptionPane
Classe JFileChooser
Prprias
Superclasse Dialog
Classe JDialog
Nelson Freire (ISEPDEI-PPROG 2012/13) 149/332
Classe JDialog
Interesse
Criar Caixas de Dilogo Prprias Para dilogos Personalizados Mais complexos Tipo Modal Modeless Exemplo
150/332
Classe JDialog
Estrutura Interna
151/332
Classe JDialog
Declarao
Object
Component Container
AWT
JComponent JOptionPane
Window
Dialog JDialog
SWING
152/332
Classe JDialog
Construtores
Declarao Funcionalidade Cria caixa de dilogo invisvel, com a janela pai, ttulo e tipo de funcionamento (true=modal ou false=modeless) especificados.
Cria caixa de dilogo invisvel e modeless, com a janela pai e ttulo especificados. Cria caixa de dilogo invisvel e sem ttulo, com janela pai e tipo de funcionamento (true=modal ou false=modeless) especificados.
Mais Usados
public JDialog( Frame owner, String title ) public JDialog( Frame owner, boolean modal)
153/332
Classe JDialog
Mtodos
Herdados Component Container Window Dialog Prprios Declarao public void setLayout(LayoutManager manager) public void setJMenuBar(JMenuBar menuBar) Funcionalidade
154/332
Classe JDialog
Mtodos
Declarao Funcionalidade Especifica operao que ocorrer, por omisso, quando utilizador inicia fecho da caixa de dilogo (boto close da moldura); Operaes escolha: DO_NOTHING_ON_CLOSE // No faz nada HIDE_ON_CLOSE DISPOSE_ON_CLOSE // Esconde caixa // Fecha caixa
Prprios (2/2)
Exemplo:
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE)
155/332
Classe JDialog
1/5
Procedimento 1. Criar nova classe derivada da classe JDialog 2. Criar construtor da nova classe
JFrame
Ttulo Flag booleana modal modeless
pai da caixa
da caixa de dilogo para indicar tipo de funcionamento da caixa true false
}
} Nelson Freire (ISEPDEI-PPROG 2012/13) 156/332
Classe JDialog
2/5
}
}
157/332
Classe JDialog
3/5
158/332
Classe JDialog
4/5
7. Criar classe de objetos para tratarem eventos gerados pela caixa de dilogo
public class DialogPatrao extends JDialog {
159/332
Classe JDialog
5/5
8. Criar e registar objetos TrataEvento para lidarem com eventos gerados pela caixa de dilogo
public class DialogPatrao extends JDialog { private JTextField txtNome, txtSalario; private JButton btOK, btCancelar; public DialogPatrao( JFrame pai ) {
btOK.addActionListener( t );
p3.add( btOK ); btCancelar = new JButton( "Cancelar" ); btCancelar.addActionListener( t ); p3.add( btCancelar ); add( p3 ); setVisible(true); } private class TrataEvento implements ActionListener { } } Nelson Freire (ISEPDEI-PPROG 2012/13) 160/332
Interfaces Grficas
Sumrio Geral
Introduo
Componentes
Introduo Hierarquia de Classes Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos
Bibliografia
ndice Remissivo
161/332
Componentes Informao
Sumrio
Classe JSeparator
162/332
Interesse
// Linha de Texto
// JLabel c/ Bordo
Imagem
Texto e Imagem
163/332
Declarao
Object
Component Container JComponent JLabel
164/332
Classe JLabel
Construtores
Declarao
1/2
Funcionalidade
Cria objeto JLabel sem imagem e sem texto. Cria objeto JLabel com texto especificado, alinhado esquerda e centrado na vertical.
public JLabel()
Exemplo
JLabel lbl = new JLabel(); public JLabel(String text) Exemplo Texto Simples JLabel lblAguia = new JLabel("guia"); Exemplo Texto Formatado String texto = "<html>As aves de rapina so aves carnvoras que compartilham "+ " <P> caractersticas semelhantes, bicos recurvados e " + " <P> pontiagudos, garras fortes e viso de longo alcance." + " <P> Exemplos:" + "<UL>" + " <LI>guia" + " <LI>Falco" + " <LI>Abutre" + " <LI>Milhafre" + "</UL></html>"; JLabel lblAvesRapina = new JLabel( texto ); lblAvesRapina.setBorder( BorderFactory.createTitledBorder( "Aves de Rapina" ) );
Nelson Freire (ISEPDEI-PPROG 2012/13)
165/332
Construtores
Funcionalidade
2/2
public JLabel( String text, int horizontalAlignment ) Exemplos: JLabel lblAguia = new JLabel( "guia", SwingConstants.RIGHT ); JLabel lblAguia = new JLabel("guia", JLabel.RIGHT );
Cria objeto JLabel com texto especificado, centrado na vertical e com alinhamento horizontal especificado.
Mtodos
1/2
Declarao
public void setText(String text)
Funcionalidade
Especifica texto.
Retorna texto.
Especifica imagem.
Ex: lbl.setIconTextGap( 10 );
Nelson Freire (ISEPDEI-PPROG 2012/13) 167/332
Mtodos
Declarao Funcionalidade
2/2
public void setVerticalAlignment( int alignment ) Exemplo 1: JLabel lblAguia = new JLabel("guia"); lblAguia.setVerticalAlignment( SwingConstants.TOP); Exemplo 2: JLabel lblAguia = new JLabel("guia"); lblAguia.setVerticalAlignment( JLabel.TOP );
168/332
Classe JLabel
Exemplo
Cdigo Incompleto
public class ContadorGUI extends JFrame {
private static String s = "Nmero de Cliques: "; private JLabel lblNumero; public ContadorGUI() { super("Contador de Cliques"); lblNumero = new JLabel(s + "0"); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 270, 150); setLocationRelativeTo(null);
setVisible(true);
}
Classe JLabel
Tipos de Evento que label pode Gerar Container
Eventos
Evento Componente adicionado label Componente removido da label Label escondida Component Label mostrada Label movida
1/2
Label redimensionada
Focus Label adquire o foco de entrada Label perde o foco de entrada Tecla mantida premida Key Tecla libertada
170/332
Classe JLabel Evento Mouse Iniciado por Clique no rato Rato movido Rato entrou/saiu da label Rato com boto premido / libertado Rato arrastado Roda do rato movida Tratamento Realizado
Eventos
2/2
Por objetos de classes que implementem o interface ActionListener Exemplo Declarao public synchronized void addMouseListener( ActionListener l ) Exemplo: JLabel lbl = new JLabel("guia"); // Classe TrataEvento implementa interface MouseListener Funcionalidade Regista objeto para tratar evento do tipo Mouse.
Classe JLabel
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/label.html
172/332
Componentes Informao
Sumrio
Classe JSeparator
173/332
Classe JSeparator
Interesse
// separador horizontal
Barra de Ferramentas
Separador de Ferramentas // separador vertical
174/332
Classe JSeparator
Declarao
175/332
Classe JSeparator
Construtores
Declarao Funcionalidade
public JSeparator()
Exemplo:
176/332
Classe JSeparator
Mtodos
Herdados Component Container JComponent Prprio Mais usado Declarao public void setOrientation( int orientation ) Funcionalidade Especifica orientao.
Exemplo
JSeparator sp1 = new JSeparator ();
sp1.setOrientation( JSeparator.VERTICAL );
177/332
Classe JSeparator
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/separator.html
178/332
Interfaces Grficas
Sumrio Geral
Introduo
Componentes
Introduo Hierarquia de Classes Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
179/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
180/332
Hierarquia de Classes
SWING
is-a
JComponent
Dialog JDialog
JSeparator JFrame
JList
JComboBox JMenuBar AbstractButton JLabel JPanel JTextComponent JTextField JFormattedTextField
JScrollPane
JMenuItem
JMenu
Legenda:
JToggleButton
JRadioButton JCheckBox
JButton
JTextArea JPasswordField
Classe Abstrata
Classe Instancivel
181/332
Classe AbstractButton
1/4
public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants { ... }
Object
182/332
Classe AbstractButton
Funcionalidade
Especifica tecla de atalho // ALT + c Especifica tecla de atalho
2/4
public void setMnemonic(char mnemonic) Exemplo: btCancelar.setMnemonic('C') ; public void setDisplayedMnemonicIndex(int index) Exemplo:
btCancelar.setDisplayedMnemonicIndex (0) ;
public void setVerticalAlignment( int alignment )
// ALT + c
Especifica alinhamento vertical do texto e cone; Opes de alinhamento: SwingConstants.CENTER (por omisso) SwingConstants.TOP SwingConstants.BOTTOM
Exemplos:
Especifica alinhamento horizontal do texto e cone; Opes de alinhamento: SwingConstants.CENTER (por omisso) SwingConstants.RIGHT SwingConstants.LEFT
JButton
JMenu
JMenuItem
JCheckBox
JRadioButton
183/332
Classe AbstractButton
Funcionalidade
Especifica a posio vertical do texto relativamente ao cone; Opes:
3/4
Retorna o texto.
JButton
JMenu
JMenuItem
JCheckBox
JRadioButton
184/332
Classe AbstractButton
Declarao Funcionalidade
Especifica o cone.
4/4
Exemplo:
bt.setRolloverIcon( new ImageIcon("c:\\tips.gif") ); public void setIconTextGap( int iconTextGap ) Exemplo:
JButton
JMenu
JMenuItem
JCheckBox
JRadioButton
185/332
Classe JToggleButton
1/4
AbstractButton
JToggleButton
186/332
Superclasses Interesse
Classe JToggleButton
2/4
Implementao de botes de dois estados Selecionado Desselecionado Herdada pelas classes JCheckBox
JRadioButton
JCheckBox
JRadioButton
187/332
Superclasses Construtores
Classe JToggleButton
Declarao
3/4
Funcionalidade
Cria boto visvel e vazio.
public JToggleButton() Exemplo: JToggleButton tbt1 = new JToggleButton(); public JToggleButton( String text )
Exemplo:
JToggleButton tbtCancelar = new JToggleButton("Cancelar");
188/332
Superclasses Bibliografia
Classe JToggleButton
4/4
http://docs.oracle.com/javase/tutorial/uiswing/components/button.html
JCheckBox
JRadioButton
189/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
190/332
Boto de Comando
Interesse
191/332
Boto de Comando
Declarao
Package javax.swing Declarao public class JButton extends AbstractButton implements Accessible { ... }
Object
Component Container JComponent AbstractButton
JButton
192/332
Boto de Comando
Classe JButton
Declarao Funcionalidade
Cria objeto JButton visvel vazio. Cria objeto JButton visvel com texto.
Construtores
public JButton() Exemplo: JButton btCancelar = new JButton(); public JButton( String text )
Exemplo:
JButton btCancelar = new JButton("Cancelar");
Boto de Comando
Classe JButton
Container
JComponent AbstractButton Prprios Declarao public void setText(String text) public String getText() Funcionalidade Especifica o texto (simples ou HTML). Retorna o texto.
Especifica o cone.
Especifica o intervalo entre texto e cone.
194/332
Boto de Comando
Classe JButton
Cdigo Incompleto
public class ContadorGUI extends JFrame {
Exemplo
setLocationRelativeTo(null);
setVisible(true); } }
Cdigo Completo
Nelson Freire (ISEPDEI-PPROG 2012/13) 195/332
Boto de Comando
Eventos
Tipos de Evento que Boto pode Gerar
Action Container Clique no boto Componente adicionado ao boto Componente removido do boto Boto escondido Component Boto mostrado Boto movido Boto redimensionado
1/2
Evento
Focus
Key
Clique no rato
Rato entrou no boto Rato saiu do boto Mouse Boto do rato premido
196/332
Boto de Comando
Eventos
2/2
Evento Action Iniciado Clique no boto de comando Tratamento Realizado Por objetos de classes que implementem o interface ActionListener
Exemplo
Declarao public void addActionListener( ActionListener l ) Exemplo: JButton bt = new JButton("Cancelar") ; // Classe TrataEvento implementa interface ActionListener TrataEvento t = new TrataEvento(); bt.addActionListener( t ); Funcionalidade Regista objeto para tratar evento do tipo Action.
197/332
Boto de Comando
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/button.html
198/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
199/332
Entrada de Texto
Permitem ao utilizador da aplicao Introduo de texto Edio de texto Tipos de Componentes Swing JTextField Object Component Container JComponent Window
Frame JFrame
JFormattedTextField
Classe abstrata
No instancivel
Nelson Freire (ISEPDEI-PPROG 2012/13) 200/332
JTextComponent
Interesse
Object
Component Container
JComponent
JTextComponent JTextArea JPasswordField JTextField
JFormattedTextField
201/332
JTextComponent
Declarao
Package javax.swing.text Declarao public abstract class JTextComponent extends JComponent implements Scrollable, Accessible { ... } Classe Abstrata
No Instancivel
Object Component Container JComponent
JTextComponent
202/332
JTextComponent
Mtodos
Mais usados
Declarao public void setText( String t ) Funcionalidade Especifica texto t para o componente;
JTextField
203/332
JTextField
Interesse
204/332
JTextField
Declarao
Package javax.swing Declarao public class JTextField extends JTextComponent implements SwingConstants { ... }
JTextComponent
JTextField
205/332
JTextField
Construtores
Declarao Funcionalidade Cria campo de texto vazio e com n de colunas 0 (espao nulo).
public JTextField( )
Exemplo:
JTextField txtNome = new JTextField(); public JTextField( String text ) public JTextField( int columns )
Cria campo de texto inicializado com o texto especificado. Cria campo de texto vazio e com n de colunas especificado.
206/332
JTextField
Mtodos
Herdados Component Container JComponent JTextComponent Prprios Mais usados Declarao public void setFont( Font f ) public void setHorizontalAlignment( int alignment ) Funcionalidade Especifica tipo, estilo e tamanho das letras. Especifica alinhamento horizontal do texto; Opes: JTextField.LEFT ou JTextField.LEADING JTextField.CENTER
JTextField.RIGHT ou JTextField.TRAILING
207/332
JTextField
Eventos
Evento
1/2
Action
Container
Component
Focus
208/332
JTextField
Eventos
2/2
Evento Action Iniciado premindo tecla ENTER Tratamento Realizado Por objetos de classes que implementem o interface ActionListener Exemplo Declarao public void addActionListener( ActionListener l ) Exemplo: JTextField txt = new JTextField( 10 ); // Classe TrataEvento implementa interface ActionListener TrataEvento t = new TrataEvento(); Funcionalidade Regista objeto para tratar evento do tipo Action.
txt.addActionListener( t );
209/332
JTextField
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html
210/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
211/332
Menu Sistema de Menus Permitir ao utilizador escolher Uma de vrias opes Salvar espao do GUI S ocupa espao Barra de Menus
Interesse
Barra de Menus
Sistema de Menus
212/332
Menu Sistema de Menus Estrutura Hierrquica Menus organizados Vrios nveis Constitudo
Barra de Menus
Contm Menus Contm Itens de Menu Separadores Submenus Barra de Menus Menu Item de Menu Separador de Itens
213/332
Menu Colocada Topo da janela Acima do Content Pane Constituda Menus de nvel superior
Barra de Menus
Torna visvel
Barra de Menus
Abertura de um Menu
Nelson Freire (ISEPDEI-PPROG 2012/13) 214/332
Object
Component
Container
JComponent
JSeparator JMenuBar AbstractButton JToggleButton JRadioButton JCheckBox
215/332
JMenuItem JMenu
Nelson Freire (ISEPDEI-PPROG 2012/13)
JButton
Classe JMenuItem
1/2
Construtores
Declarao public JMenuItem( String text ) Ex: JMenuItem mitAcerca = new JMenuItem("Acerca"); public JMenuItem( String text, int mnemonic ) Ex: JMenuItem mitAcerca = new JMenuItem("Acerca", 'A'); public JMenuItem(String text, Icon icon ) Funcionalidade Constri item de menu com texto especificado. Constri item de menu com texto e mnemnica do teclado especificados. Constri item de menu com texto e cone especificados.
public JMenuItem( )
Ex: JMenuItem mitSair = new JMenuItem();
Nelson Freire (ISEPDEI-PPROG 2012/13)
Menu Mtodos Herdados Component Container JComponent AbstractButton Prprios (mais usados)
Classe JMenuItem
2/2
Declarao
Funcionalidade
Classe JMenu
1/2
Construtores
Declarao Funcionalidade
Exemplo:
JMenu mitSair = new JMenu();
218/332
Menu Mtodos Herdados Component Container JComponent AbstractButton JMenuItem Prprios Mais usados Declarao
Classe JMenu
2/2
Exemplo:
JMenuItem mitAcerca = new JMenuItem("Acerca");
Classe JMenuBar
1/2
Construtor
Declarao public JMenuBar( ) Exemplo: JMenuBar mb = new JMenuBar(); Funcionalidade Constri barra de menus.
220/332
Menu Mtodos Herdados Component Container JComponent Prprio Mais usado Declarao
Classe JMenuBar
2/2
Funcionalidade
221/332
Sistema de Menus
222/332
Menu
1/5
Mnemnicas
Aceleradores
223/332
2/5
Identificadas Por carater sublinhado no nome Menu Item de menu Usadas Simultaneamente com tecla ALT ALT + Mnemnica Exemplos (figura) ALT + A ALT + s Itens de menu Tm de estar visveis // abre menu // abre submenu Mnemnicas e Aceleradores Mnemnica o Acelerador de Item
224/332
3/5
Menus podem estar fechados Acesso + rpido Evitam navegao pela hierarquia de menus Tipos Tecla simples Exemplo: x Combinao de teclas Exemplos Alt+1 CTRL+X // figura Acelerador de Item
Mnemnica o
Mnemnicas e Aceleradores
225/332
Menu
4/5
Implementao de Mnemnica Tem de ser carater do nome de Menu, Item ou Submenu Formas JMenu public void setMnemonic( char mnemonic ) public void setDisplayedMnemonicIndex(int index) Exemplo JMenu menuEditar = new JMenu("Editar"); menuEditar.setMnemonic('E'); menuEditar. setDisplayedMnemonicIndex(0); // pelicas = char; ALT+E // ALT + E // sublinha 1 carater // ndice a partir de 0
JMenuItem
Mtodos semelhantes aos anteriores e um construtor: public JMenuItem(String text, int mnemonic) Exemplo Item de Menu JMenuItem menuItem = new JMenuItem("Cut", 'C' ); ou JMenuItem menuItem = new JMenuItem("Cut"); menuItem.setMnemonic('C');
Nelson Freire (ISEPDEI-PPROG 2012/13) 226/332
// construtor
// C ou ALT+C
5/5
Exemplos
JMenuItem itemCortar = new JMenuItem("Cortar"); itemCortar.setAccelerator( KeyStroke.getKeyStroke("ctrl X") ); itemCortar.setAccelerator( KeyStroke.getKeyStroke("alt X") ); itemCortar.setAccelerator( KeyStroke.getKeyStroke('x') ); // combinao CTRL+X // combinao ALT+X // x
Classe keystroke
Cada instncia representa uma tecla Mtodo static Keystroke getKeyStroke( int keyCode ) Cria instncia KeyStroke Encapsula tecla premida correspondente a evento KEY_PRESSED Keycode Representa cdigo virtual duma tecla
Nelson Freire (ISEPDEI-PPROG 2012/13) 227/332
Menu
Eventos
Tipos de Evento que Menu/Item podem Gerar Evento
1/3
Action
Container
Clique em menu/item
Componente adicionado a menu/item
Component
Focus
Item
Key
Selecionado/desselecionado item
Tecla mantida premida Tecla libertada Tecla premida (toque)
Clique no rato
Rato entrou no menu/item Rato saiu do menu/item Mouse Boto do rato premido
228/332
Eventos
Clique Teclado
2/3
Tratamento
Realizado
Por objetos de classes que implementem o interface ActionListener Exemplo 1 JMenuItem itemSair = new JMenuItem("Sair"); itemSair.addActionListener(new ActionListener() { // classe (interna) annima
}
}); Exemplo 2 Slide Seguinte
Nelson Freire (ISEPDEI-PPROG 2012/13) 229/332
Menu
Eventos
3/3
Exemplo de mtodo para tratar evento Action gerado por itens de menu
230/332
Menu
Bibliografia
http://download.oracle.com/javase/tutorial/uiswing/components/menu.html
http://www.faqs.org/docs/javap/c7/s5.html
231/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
232/332
Caixa de Listagem
Interesse
Implementar Listas de Itens Para utilizador escolher Um item Mltiplos itens Apresentados Uma coluna Mltiplas colunas Itens de Lista Colocados numa simples caixa
Objetos arbitrrios
Exemplos Strings Caixas de verificao (JCheckBox)
Caixa de Listagem
Classe JList
Package javax.swing Declarao public class JList<E> extends JComponent implements Scrollable, Accessible { ... }
Object Component Container JComponent JList Tipo E Especifica tipo de item da caixa de listagem
Nelson Freire (ISEPDEI-PPROG 2012/13) 234/332
Caixa de Listagem
Modelo de Dados
Classe JList Usa a arquitetura Model-View-Controller Para separar Vista dos dados Dados subjacentes Colees de objetos Responsvel apenas pela vista dos dados Sabe muito pouco sobre a forma como dados esto armazenados No fornece mtodos para inserir e remover itens da lista Dados Guardados em objetos de classes que implementam interface ListModel Exemplo Classe DefaultListModel Permite construir um objeto modelo da lista Guarda dados num objeto da classe Vector DefaultListModel lstModel = new DefaultListModel(); lstModel.addElement("Ana"); JList lstNomes = new JList( lstModel ); lstModel.removeElement("Ana");
Nelson Freire (ISEPDEI-PPROG 2012/13) 235/332
// View // Model
Caixa de Listagem
Construtores
Declarao Funcionalidade Constri caixa de listagem com modelo de dados vazio e que apenas pode ser lido
public JList( ) Ex: JList lstNomes = new JList(); public JList(final E[] listData)
Cria um modelo de dados carregado com os elementos do array e que apenas pode ser lido;
O modelo referencia o array especificado. public JList(ListModel<E> dataModel) Constri caixa de listagem que mostra os elementos do modelo de dados especificado.
236/332
Caixa de Listagem
Outras Caractersticas
Por omisso Mostra 8 itens Itens Podem ser seleccionados por cliques Seleo pode ser
Mltipla
Simples
// por omisso
// atravs do mtodo
setSelectionMode( ListSelectionModel.SINGLE_SELECTION ) Visualizao de listas grandes Requer painel JScrollPane Exemplo Slide Seguinte
JList + JScrollPane
Nelson Freire (ISEPDEI-PPROG 2012/13) 237/332
Caixa de Listagem
Mtodos
Herdados Component Container JComponent Prprios (1/2) Mais usados Declarao public void setSelectionMode(int selectionMode) Funcionalidade Especifica modo de seleo de itens
Exemplo
String itens = "Ana", "Maria", "Joo"; JList lst = new JList(itens); lst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
SINGLE_SELECTION
SINGLE_INTERVAL_SELECTION
MULTIPLE_INTERVAL_SELECTION
238/332
Caixa de Listagem
Mtodos
Declarao Funcionalidade
Retorna ndice do item selecionado / menor ndice no modo multi-seleo; Retorna -1, sem item selecionado. Retorna array com todos os ndices selecionados, ordenados de modo ascendente; Retorna array vazio, sem item selecionado.
Prprios (2/2)
public E getSelectedValue()
Retorna item selecionado / com menor ndice no modo multi-seleo; Retorna null, sem item selecionado.
Retorna lista de itens selecionados, ordenados de modo ascendente dos seus ndices; Retorna lista vazia, sem item selecionado.
public void setVisibleRowCount(int visibleRowCount) Especifica o n de linhas apresentada sem recorrer ao scrolling.
239/332
Caixa de Listagem
Listagem de Strings
240/332
Caixa de Listagem
Bibliografia
http://download.oracle.com/javase/tutorial/uiswing/components/list.html
241/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
242/332
Caixa de Combinao
Noo
Boto
1/2
Lista
No-Editvel
Editvel
// por omisso
(1) (2)
Combina os elementos
Campo de Texto com Boto
Lista
Lista
Caixa de Combinao Editvel
Nelson Freire (ISEPDEI-PPROG 2012/13) 243/332
Caixa de Combinao
Noo
Boto
2/2
Lista
Permite ao utilizador Selecionar uma opo Campo de Texto Permite ao utilizador Editar opo selecionada Interesse Em listas grandes Para seleo mais rpida Opo escondida (1) (2)
Lista
Lista
Caixa de Combinao
Interesse
Permitir ao Utilizador Escolher uma opo ... entre n considervel de alternativas Vantagem Minimizao do espao GUI ocupado Alternativa Com Botes de Opo Ocupa muito mais espao GUI
245/332
Caixa de Combinao
Classe JComboBox
Package javax.swing Declarao public class JComboBox<E> extends JComponent implements ItemSelectable,ListDataListener,ActionListener, Accessible { ... }
Object Component Container JComponent JComboBox Tipo E Especifica tipo de opo da caixa de combinao
Nelson Freire (ISEPDEI-PPROG 2012/13) 246/332
Caixa de Combinao
Construtores
Declarao Funcionalidade
Constri caixa de combinao no-editvel com uma lista de opes vazia.
Mais usados
public JComboBox( )
Exemplos
JComboBox cbMarcas = new JComboBox();
Exemplo 2
String[ ] nums= "1","2","3","4","5","6","7","8","9";
247/332
Caixa de Combinao
Mtodos
Mais usados
Declarao Funcionalidade
Se a quantidade total de opes exceder o valor especificado, a lista mostra uma scrollbar.
248/332
Caixa de Combinao
Mtodos
Declarao Funcionalidade
Adiciona opo lista.
Prprios (2/3)
cbMarcas.addItem("Audi");
public void insertItemAt(E item, int index) Adiciona opo lista, na posio index;
Exemplo
cbMarcas.insertItemAt("Alfa Romeo", 0);
ndices a partir de 0.
cbMarcas.removeItem("Audi");
public void removeItemAt(int index) public void removeAllItems() Remove opo na posio especificada. Remove todas as opes da lista.
249/332
Caixa de Combinao
Mtodos
Declarao Funcionalidade
Seleciona opo com ndice especificado; ndice 0 seleciona 1 opo da lista; ndice -1 no seleciona opo. Retorna opo selecionada; Numa caixa de combinao editvel pode retornar opo que no foi adicionada lista.
Prprios (3/3)
public void setSelectedIndex(int index) Exemplo cbMarcas.setSelectedIndex(2); public Object getSelectedItem() Exemplo Object obj = cbMarcas.getSelectedItem();
250/332
Caixa de Combinao
Exemplo
251/332
Caixa de Combinao
Eventos
Evento
1/2
Action
Container
Selecionado item
Componente adicionado caixa de combinao
Component
Focus
Item
Key
Selecionado/desselecionado item
Tecla mantida premida Tecla libertada Tecla premida (toque)
Clique no rato
Rato entrou na caixa de combinao Rato saiu da caixa de combinao Mouse Boto do rato premido
252/332
Caixa de Combinao
Eventos
2/2
Realizado
Objetos de classes que implementem o interface ActionListener
Exemplo
String[ ] marcas = "Audi", "BMW", "Fiat"; JComboBox cbMarcas = new JComboBox( marcas ); cbMarcas.addActionListener(new ActionListener() { // classe (interna) annima
...
}
});
253/332
Caixa de Combinao
Bibliografia
http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
254/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
255/332
Caixa de Verificao
Classe JCheckBox
Bibliografia http://docs.oracle.com/javase/tutorial/uiswing/components/button.html#checkbox
256/332
Sumrio
Controlos Bsicos Hierarquia de Classes Superclasses AbstractButton JToggleButton Boto de Comando Entrada de Texto Menu Caixa de Listagem
Caixa de Combinao
Caixa de Verificao
Boto de Opo
257/332
Boto de Opo
Classe JRadioButton
Bibliografia http://docs.oracle.com/javase/tutorial/uiswing/components/button.html#radiobutton
258/332
Interfaces Grficas
Sumrio Geral
Introduo
Componentes
Introduo Hierarquia de Classes Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia ndice Remissivo
259/332
Gestores Posicionamento
Sumrio
Noo
Tipos
Hierarquia de Classes Gestores de Posicionamento
BorderLayout
FlowLayout
GridLayout
CardLayout Combinao de Diferentes Tipos num GUI
260/332
Gestores Posicionamento
Gestores de Posicionamento (Layout Managers) Objetos que gerem dinamicamente a posio de componentes dentro dos contentores Exemplo
Contentor de Componentes
261/332
Gestores Posicionamento
Nativos BorderLayout
FlowLayout Abordados aqui
GridLayout
CardLayout BoxLayout GridBagLayout GroupLayout SpringLayout
262/332
Gestores Posicionamento
Java Fornece uma Classe Para cada tipo de gestor Hierarquia de Classes
Object
package java.awt
BorderLayout
LayoutManager2
implements is-a
LayoutManager
Serializable
interfaces
Gestores Posicionamento
Gestores BorderLayout
1/12
264/332
Gestores Posicionamento
Gestores BorderLayout
2/12
Oeste
Centro Este Sul Colocam automaticamente um componente na regio Indicada pelo programa Centro // por omisso
Sobrepostos
Visvel
ltimo adicionado
265/332
Gestores Posicionamento
Gestores BorderLayout
3/12
Altura
Preferida do componente Modificvel via mtodo setPreferredSize() Largura Contentor Oeste e Este Largura Preferida do componente Altura
266/332
Gestores Posicionamento
Gestores BorderLayout
4/12
Altera altura
Este
Centro
Oeste Em largura Altera largura Norte Centro Sul
267/332
Gestores Posicionamento
Gestores BorderLayout
5/12
Nulo
Exemplo
Exemplo
268/332
Gestores Posicionamento
Gestores BorderLayout
6/12
269/332
Gestores Posicionamento
Gestores BorderLayout
7/12
implements
LayoutManager2
LayoutManager
Serializable
is-a interfaces
270/332
Gestores Posicionamento
Gestores BorderLayout
// constroem novos objetos gestores BorderLayout Declarao Funcionalidade Gestor posiciona componentes sem intervalos entre eles. Gestor posiciona componentes com intervalos entre eles.
8/12
hgap
271/332
Gestores Posicionamento
Gestores BorderLayout
// mais usados Funcionalidade
9/12
272/332
Gestores Posicionamento
Gestores BorderLayout
10/12
public static final String NORTH = "North"; public static final String SOUTH = "South";
public static final String EAST = "East"; public static final String WEST = "West";
Gestores Posicionamento
Gestores BorderLayout
11/12
Painel BorderLayout
Centro
Sul
Painel
Gestor
FlowLayout
Nmero de Cliques: 0
BorderLayout
274/332
Gestores Posicionamento
Gestores BorderLayout
public class ContadorGUI extends JFrame {
12/12
Exemplo
private static String s = "Nmero de Cliques: "; private JLabel lblNumero; private JButton btnIncrementar, btnReiniciar; public ContadorGUI() { super("Contador de Cliques");
setLocationRelativeTo(null);
setVisible(true);
}
JLabel
} 275/332
Gestores Posicionamento
Gestores FlowLayout
1/9
Em linha
Exemplo Alinhar botes de comando na horizontal
276/332
Gestores Posicionamento
Gestores FlowLayout
2/9
Funcionamento Usam tamanhos preferidos dos componentes Modificveis via mtodo setPreferredSize(...) Mtodo setSize(...) no altera tamanho Colocam componentes em linhas consecutivas Automaticamente Por omisso Linhas alinhadas ao centro Intervalos entre componentes/bordo 5 pxeis Quando espao insuficiente numa linha Tentam colocar os restantes componentes na linha seguinte Quando o contentor redimensionado, os componentes So reposicionados automaticamente de modo a preencherem o espao disponvel em linhas consecutivas No so redimensionados Controlam completamente a posio de cada componente Programador no consegue definir Posio precisa de um componente
Nelson Freire (ISEPDEI-PPROG 2012/13) 277/332
Largura Alterada
Largura Alterada
Gestores Posicionamento
Gestores FlowLayout
3/9
Direita
Centro
278/332
Gestores Posicionamento
Gestores FlowLayout
4/9
interface
279/332
Gestores Posicionamento
Gestores FlowLayout
5/9
Valor indica que cada linha de componentes dever ser alinhada esquerda.
Valor indica que cada linha de componentes dever ser alinhada ao centro. Valor indica que cada linha de componentes dever ser alinhada direita.
Exemplos de Uso
FlowLayout.LEFT FlowLayout.CENTER FlowLayout.RIGHT
280/332
Gestores Posicionamento
Gestores FlowLayout
// constroem novos objetos gestores FlowLayout Declarao Funcionalidade
6/9
public FlowLayout()
public FlowLayout(int align) public FlowLayout(int align, int hgap, int vgap)
Gestores Posicionamento
Gestores FlowLayout
// mais usados Funcionalidade
7/9
Exemplos de Uso
FlowLayout f1 = new FlowLayout(); f1.setAlignment( FlowLayout.LEFT ); f1.setVgap( 10 ); f1.setHgap( 20 ); // alinhamento especificado por campo de classe LEFT
282/332
Gestores Posicionamento
Gestores FlowLayout
8/9
Exemplo
Posicionamento dos Componentes do GUI (Layout)
Painel BorderLayout
Centro
Sul
Painel FlowLayout
Painel
Gestor Flowlayout
Nmero de Cliques: 0
BorderLayout
Gestores Posicionamento
Gestores FlowLayout
public class ContadorGUI extends JFrame {
private static String s = "Nmero de Cliques: "; private JLabel lblNumero; private JButton btnIncrementar, btnReiniciar; public ContadorGUI() {
9/9
Exemplo
super("Contador de Cliques");
lblNumero = new JLabel(s + "0"); add(lblNumero, BorderLayout.CENTER); btnIncrementar = new JButton("Incrementar"); btnReiniciar = new JButton("Reiniciar");
284/332
Gestores Posicionamento
Gestores GridLayout
// semelhante a folha de clculo
1/6
Todas as clulas tm sempre o tamanho igual Componentes so redimensionados na mesma proporo do redimensionamento do contentor
Contentor GridLayout
285/332
Gestores Posicionamento
Gestores GridLayout
2/6
Construtor permite especificar Nmero de linhas e de colunas Exemplo GridLayout g = new GridLayout(3,3); Opcionalmente, o intervalo entre linhas (intH) e colunas ( intV) Sintaxe GridLayout( n inhas, n colunas, intH, intV) Exemplo GridLayout g = new GridLayout(3,3,4,5); Unidade de medida = Pixel
Posicionamento de componentes Colocados linha-a-linha (1, depois 2, etc.) Exemplo JPanel pane = new JPanel( g ); Intervalo entre Componentes
Gestores Posicionamento
Gestores GridLayout
// Ex: GridLayout g = new GridLayout(0,0);
3/6
Definio da Grid (1/3) N de Linhas = N de Colunas = 0 Erro de execuo N de Linhas > 0 N de colunas irrelevante Exemplos N de linhas = 1: todos os componentes colocados na mesma linha GridLayout g = new GridLayout(1,0); GridLayout g = new GridLayout(1,5); (1,0) (1,5) N de linhas = 5 // pode ser qualquer n Gestor maximiza uso de linhas
287/332
Gestores Posicionamento
Gestores GridLayout
4/6
288/332
Gestores Posicionamento
Gestores GridLayout
5/6
N de Colunas = 9
GridLayout g = new GridLayout(0,9);
289/332
Gestores Posicionamento
Gestores GridLayout
6/6
Exemplo (completo) import javax.swing.*; public class GridLayoutGUIDemo extends JFrame { public GridLayoutGUIDemo() { super("GridLayout"); setLayout( new GridLayout(3,3) ); add( new JButton("Um") ); add( new JButton("Dois") ); add( new JButton("Trs") ); add( new JButton("Quatro" ) );
add(new JButton("Cinco" ) );
add(new JButton(" Seis") );
add(new JButton("Sete") );
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400, 200);
setLocationRelativeTo(null);
setVisible(true);
} }
Nelson Freire (ISEPDEI-PPROG 2012/13) 290/332
Gestores Posicionamento
Gestores CardLayout
1/6
Exemplo (direita) Aplicao permite trocar o painel visvel entre 3 painis que partilham a mesma rea do GUI Interesse Gerir a troca do componente visvel, entre vrios escondidos, que partilham a mesma rea do GUI
Gestores Posicionamento
Gestores CardLayout
2/6
Formas de trocar carto visvel Pedindo o primeiro ( first ) ou ltimo ( last ) carto Segundo a ordem de adio dos cartes ao contentor
Gestores Posicionamento
Gestores CardLayout
CardLayout cl = new CardLayout(); JPanel p2 = new JPanel( cl ); // pilha de cartes
3/6
2.
3.
4.
293/332
Gestores Posicionamento
Gestores CardLayout
4/6
Exemplo (completo)
public class CardLayoutGUIDemo extends JFrame { private CardLayout cl;
// Contentor CardLayout
p2 = new JPanel( cl );
JButton b1 = new JButton("guia"); JButton b2 = new JButton("Drago"); JButton b3 = new JButton("Leo"); Container c = getContentPane(); c.setBackground( Color.white ); c.setLayout( new BorderLayout( 10 , 10) ); // Barra branca
294/332
Gestores CardLayout
5/6
cartao1.setBackground( Color.RED );
JLabel lblAguia = new JLabel( new ImageIcon( "c:\\aguia.jpg" ) );
cartao1.add( lblAguia );
cartao1.add( new JLabel("Primeiro Carto") ); p2.add( cartao1, "Primeiro" ); JPanel cartao2 = new JPanel(); cartao2.setBackground( Color.BLUE ); JLabel lblDragao = new JLabel( new ImageIcon( "c:\\dragao.jpg" ) ); cartao2.add( lblDragao ); // carto 1 designado Primeiro
295/332
Gestores CardLayout
6/6
b1.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { cl.first( p2 ); // alternativa: cl.show(p2, "Primeiro");
}
}); b2.addActionListener(new ActionListener() {
}
}); b3.addActionListener(new ActionListener() {
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(250, 160);
setResizable(false); setLocationRelativeTo(null); setVisible(true); } }
296/332
Gestores Posicionamento
Contentor GridLayout
Center
Contentor GridLayout
West Center
Contentor BorderLayout
Nelson Freire (ISEPDEI-PPROG 2012/13) 297/332
Interfaces Grficas
Sumrio Geral
Hierarquia de Classes
Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
298/332
Sumrio
299/332
Sumrio
Classes de Evento
Noo Hierarquia Interfaces Trata Evento Noo Hierarquia Mtodos de Evento Tipos de Eventos Gerados por Componentes Principais
300/332
Noo de Evento
Teclas premidas
Sistema operativo que suporta aplicaes GUIs Monitoriza constantemente eventos Reporta esses eventos s aplicaes em execuo Cada aplicao decide a forma de responder a esses eventos Faz a captura e o tratamento dos eventos
Sistema Operativo
Aplicao GUI orientada por Eventos Quais so os eventos que aplicao GUI pode manipular?
Nelson Freire (ISEPDEI-PPROG 2012/13) 301/332
Eventos
Tipo de Evento Action
Tipos de Evento
Evento Clique num boto de comando Clique num item de menu Terminada edio de campo de texto Selecionado item de caixa de combinao Componente escondido Componente mostrado Componente movido Componente redimensionado Tecla mantida premida Tecla libertada Tecla premida (toque) Clique no rato Rato entrou no componente Rato saiu do componente Boto do rato premido Boto do rato libertado Rato movido Rato arrastado (premido + movido) Roda do rato movida Tipos de Evento
Container
Item Adjustment
Component
Focus
Text
Key
Window
Mouse
Evento Componente adicionado Componente removido Item selecionado Item desselecionado Scrollbar movido Componente ganha foco Componente perde foco Texto alterado Janela abriu Janela fechou Janela ficou activa Janela ficou inactiva Janela ficou minimizada Janela ficou restaurada (tamanho original) Utilizador quer fechar Janela
Eventos iniciados pelo utilizador Eventos do rato Movimentos Cliques Eventos do teclado Teclas pressionadas
Nelson Freire (ISEPDEI-PPROG 2012/13)
// tipo Key
302/332
Eventos Cada Tipo de Evento Representado por classe de evento Classes de Evento
Classes de Evento
// Ex: tipo Action representado por classe ActionEvent
InputEvent
KeyEvent
package java.awt.event
MouseEvent MouseWheelEvent
303/332
Eventos Cada Tipo de Evento Tem um interface associado Exemplos: Tipo Action Tipo Window
Pertencem hierarquia de interfaces ilustrada So subinterfaces de EventListener // Topo da Hierarquia (superinterface) EventListener ContainerListener TextListener MouseWheelListener
KeyListener
FocusListener ActionListener AdjustmentListener
MouseListener
WindowListener ItemListener package java.awt.event Excepto EventListener (java.util)
ComponentListener Especificam Mtodos de evento para tratar todos os eventos do tipo correspondente
Nelson Freire (ISEPDEI-PPROG 2012/13)
// slides seguintes
304/332
Eventos
Mtodos de Evento
1/2
Evento Classe de Evento Interface Trata Evento Mtodo de Evento Clique num boto de comando Clique num item de menu ActionEvent ActionListener actionPerformed(ActionEvent e) Termina edio de campo de texto Selecionado item caixa combinao Item seleccionado/desseleccionado ItemEvent ItemListener itemStateChanged(ItemEvent e) Componente escondido componentHidden(ComponentEvent e) Componente mostrado componentShown(ComponentEvent e) ComponentEvent ComponentListener Componente movido componentMoved(ComponentEvent e) Componente redimensionado componentResized(ComponentEvent e) Componente adquire foco focusGained(FocusEvent e) FocusEvent FocusListener Componente perde foco focusLost(FocusEvent e) Tecla mantida premida keyPressed(KeyEvent e) Tecla libertada KeyEvent KeyListener keyReleased(KeyEvent e) Tecla premida keyTyped(KeyEvent e) Clique no rato mouseClicked(MouseEvent e) Rato entrou no componente mouseEntered(MouseEvent e) Rato saiu do componente MouseListener mouseExited(MouseEvent e) Boto do rato premido mousePressed(MouseEvent e) MouseEvent Boto do rato libertado mouseReleased(MouseEvent e) Rato movido mouseMoved(MouseEvent e) MouseMotionListener Rato arrastado (movido + premido) mouseDragged(MouseEvent e) Roda do rato movida MouseWheelListener mouseWheelMoved(MouseWheelEvent e)
305/332
Eventos
Mtodos de Evento
Evento Classe de Evento ContainerEvent AdjustmentEvent TextEvent Interface Trata Evento ContainerListener Mtodo de Evento
2/2
Componente adicionado Componente removido Scrollbar movido Texto alterado Janela abriu Janela fechou Janela ficou activa Janela ficou inactiva Janela ficou minimizada Janela restaurada (tamanho original) Utilizador quer fechar Janela
WindowEvent
componentAdded(ContainerEvent e) componentRemoved(ContainerEvent e) AdjustmentListener adjutmentValue(AdjustmentEvent e) TextListener textValueChanged(TextEvent e) windowOpened(WindowEvent e) windowClosed(WindowEvent e) windowActivated(WindowEvent e) WindowListener windowDeactivated(WindowEvente) windowIconified(WindowEvent e) windowDeiconified(WindowEvent e) windowClosing(WindowEvent e)
306/332
Eventos
Componente JButton Action
JCheckBox
JComboBox
JComponent
Container JDialog JFileDialog JFrame JLabel JList JMenu JMenuItem
JPopupMenu
JPanel
JScrollBar
JScrollPane
JTextArea
JTextComponent JTextField Window
307/332
Eventos
Componente JButton JComboBox JList JMenuItem JTextField JCheckBox JCheckboxMenuItem
Action
JList
JTextComponent JScrollBar
JComponent
Mouse
Window
308/332
Eventos Manipulao
Sumrio
Fonte de Evento
Objeto Evento
Tratamento de Eventos
Classes de Objetos Trata Evento Externas Internas Annimas Classes Adapter
309/332
Eventos Captura de eventos Tratamento de eventos Programador precisa de conhecer Modelo de Eventos (AWT)
Manipulao de Eventos
310/332
Evento
// Gerado pela Fonte de Evento (um para cada objeto Trata Evento)
Trata Evento // Trata o evento aps notificao recebida num objeto Evento
Evento
Trata Evento
Eventos Responsabilidade
1/3
Evento
Fonte de Evento
Evento
Evento
Trata Evento
Modelo de Eventos (AWT) Tm de ser objetos de classes que implementem Interfaces Trata Evento Designadas Classes Trata Evento
Slide seguinte
Nelson Freire (ISEPDEI-PPROG 2012/13) 312/332
Eventos Exemplos de classes Trata Evento Para tratar eventos do tipo Action
2/3
Implementar interface ActionListener implementar mtodo de evento actionPerformed especificado pela interface Implementar interface MouseListener e/ou MouseMotionListener tm de implementar todos os mtodos de evento correspondentes descritos na tabela abaixo apresentada Alternativa, herdar a classe MouseAdapter (Classes Adapter apresentadas mais adiante):
Evento Classe de Evento Interface Trata Evento Clique num boto de comando Clique num item de menu ActionEvent ActionListener Termina edio de campo de texto Selecionado item caixa de combinao Clique no rato Rato entrou no componente Rato saiu do componente MouseListener Boto do rato premido MouseEvent Boto do rato libertado Rato movido MouseMotionListener Rato arrastado (movido + premido)
actionPerformed(ActionEvent e)
313/332
Eventos
3/3
Mtodo de Evento
314/332
Eventos Responsabilidade
Fonte de Evento
1/3
Gerar um tipo de evento e comunic-lo aos objetos Trata Evento registados nesse tipo de evento A comunicao do evento feita atravs de objetos de Evento componente GUI Exemplos Evento Trata Evento Trata Evento
Boto de comando
Label Campo de texto Cada Componente GUI fornece
// objeto JButton
// objeto JLabel // objeto JTextField
Fonte de Evento
Evento
Evento
Mtodos para registar objetos Trata Evento dos tipos de evento que pode gerar
Um mtodo para cada tipo de evento que pode gerar Nome e parmetro do gnero
Trata Evento
addEventListener( EventListener l )
Exemplos addActionListener( ActionListener l ) addKeyListener( KeyListener l )
Nelson Freire (ISEPDEI-PPROG 2012/13)
// regista objetos Trata Evento de eventos tipo Action // regista objetos Trata Evento de eventos tipo Key
315/332
Eventos
Fonte de Evento
2/3
Exemplo do Boto de Comando (tipo JButton) Fornece os seguintes mtodos para registar objetos Trata Evento public void addActionListener( ActionListener l ) public synchronized void addComponentListener( ComponentListener l ) public synchronized void addFocusListener( FocusListener l ) public synchronized void addKeyListener( KeyListener l ) public synchronized void addMouseListener( MouseListener l ) public synchronized void addMouseMotionListener( MouseMotionListener l )
JFrame
JLabel
JList
JMenu
JMenuItem
JPanel JTextField Window
316/332
Eventos
Fonte de Evento
3/3
Registo de um objeto Trata Evento do tipo Action gerado pelo boto btnSair
317/332
Objeto Evento
1/5
Enviado Aos objetos Trata Evento desse evento , registados na Fonte de Evento
Responsabilidade Encapsular informao sobre o evento ocorrido
Exemplos
Referncia do componente Fonte de Evento Ttulo do boto de comando // identifica a ao pretendida Trata Evento Trata Evento Interface Trata Evento
Fonte de Evento
Evento
Informao sobre o Evento
Trata Evento
Implementa
Objeto Evento
2/5
Exemplos
Evento Clique num JButton Clique num JMenuItem Termina a edio de um TextField Selecionado item caixa de combinao Item selecionado/desselecionado Componente escondido Componente mostrado Componente movido Componente redimensionado Componente adquire foco Componente perde foco Clique no rato Rato entrou no componente Rato saiu do componente Rato com boto premido Rato com boto libertado Rato movido Rato arrastado (movido + premido) Tipo de Evento Classe de Evento
Action
ActionEvent
Item
ItemEvent
Component
ComponentEvent
Focus
FocusEvent
MouseEvent Mouse
MouseMotionEvent
319/332
Eventos
Objeto Evento
3/5
Passado por Parmetro Aos mtodos de evento dos objetos Trata Evento
Exemplo
Parmetro e Passa para dentro do mtodo o objeto Evento gerado pela Fonte de Evento Obs
Retorna o objeto Fonte do Evento Permite a um mtodo de evento processar diferentes fontes Exemplo: e.getSource() == btnSair Retorna o ttulo do comando associado a esta ao Permite identificar a ao pretendida S disponvel em eventos do tipo Action
Mtodo
public Object getSource() Exemplo: e.getSource() public String getActionCommand()
Exemplo: e.getActionCommand();
Nelson Freire (ISEPDEI-PPROG 2012/13)
Eventos
Objeto Evento
4/5
321/332
Eventos
Objeto Evento
5/5
Mtodo de Evento trata eventos do tipo Action gerados por duas Fontes de Evento diferentes
Nelson Freire (ISEPDEI-PPROG 2012/13) 322/332
Eventos Procedimento
Tratamento de Eventos
1/2
323/332
Eventos
Tratamento de Eventos
2/2
Procedimento Passo 1: Criar Classe Trata Evento H duas formas Atravs da Implementao de um Interface Trata Evento Interface Trata Evento do tipo de evento a tratar Exemplo: clique num boto de comando (tipo JButton) JButton gera evento do tipo Action Classe Trata Evento deve implementar interface ActionListener
Classe Interna
Identificada Annima Exemplos Prximos Slides
Nelson Freire (ISEPDEI-PPROG 2012/13)
324/332
Eventos Possvel:
public class DemoTrataEvento2 extends JFrame { public DemoTrataEvento2() { super("Demo"); JButton botao = new JButton("Calcular"); TrataEventoAction t = new TrataEventoAction(); // cria objeto t para tratar eventos tipo Action botao.addActionListener( t ); // registado t para tratar evento Action do botao add(botao); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 200, 200 ); setVisible(true); } private class TrataEventoAction implements ActionListener { // Classe Trata Evento Interna public void actionPerformed(ActionEvent e) { // cdigo de resposta ao evento tipo Action; p.ex., gerado pelo boto } } } public class ProgramaPrincipal { public static void main(String[] args) { DemoTrataEvento2 d = new DemoTrataEvento2(); } } Nelson Freire (ISEPDEI-PPROG 2012/13) 326/332
Eventos
});
add(botao); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 200, 200 ); setVisible(true); }
}
public class ProgramaPrincipal { public static void main(String[] args) { DemoTrataEvento3 d = new DemoTrataEvento3(); } } Nelson Freire (ISEPDEI-PPROG 2012/13) 327/332
Eventos Interesse
Classes Adapter
1/2
Simplificar criao de Classes Trata Evento que precisam de implementar apenas alguns mtodos de Interfaces Trata Evento que especificam mltiplos mtodos Exemplo Interface WindowListener especifica vrios mtodos e obriga a sua implementao em classes instanciveis
windowOpened(WindowEvent e)
windowClosed(WindowEvent e) windowActivated(WindowEvent e) windowDeactivated(WindowEvente) windowIconified(WindowEvent e) windowDeiconified(WindowEvent e) windowClosing(WindowEvent e) Em muitas situaes Apenas precisamos de tratar alguns destes mtodos Java fornece Classe Adapter para cada Interface Trata Evento com mltiplos mtodos especificados Exemplos WindowAdapter MouseAdapter
Nelson Freire (ISEPDEI-PPROG 2012/13) 328/332
Classes Adapter
2/2
// Classe annima
329/332
Interfaces Grficas
Sumrio Geral
Hierarquia de Classes
Interfaces Categorias Contentores de Componentes Apresentao de Informao
Controlos Bsicos
Gestores de Posicionamento Eventos Bibliografia Geral ndice Remissivo
330/332
Bibliografia Geral
Livro Core Java, Volume I Fundamentals Cay S. Horstmann and Gary Cornell
Tutoriais Componentes
http://docs.oracle.com/javase/tutorial/uiswing/components/index.html
Gestores de Posicionamento
http://download.oracle.com/javase/tutorial/uiswing/layout/index.html
Eventos
http://download.oracle.com/javase/tutorial/uiswing/events/index.html
331/332
ndice Remissivo
Componentes Controlos Bsicos Boto de Comando Componentes (continuao) Contentores de Componentes Painis JPanel JLayeredPane JRootPane JScrollPane Janelas JFrame
JButton
Entrada de Texto JTextField Escolha de Opes JCheckBox JComboBox JList JRadioButton Menus JMenu JMenuBar JMenuItem Apresentao de Informao JLabel JSeparator