You are on page 1of 332

PPROG

Paradigmas da Programao

Interfaces Grficas
Componentes Gestores de Posicionamento

Eventos

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

3/332

Introduo

Sumrio

Interface do Utilizador
Noo Tipos Consola Grfica (GUI Graphical User Interface)

Interface do Utilizador Grfica


Constituio Componentes Gestores de Posicionamento Tratadores de Eventos Toolkits Java para GUIs AWT Swing

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

// Para utilizador controlar execuo do programa


// Para programa indicar efeitos do controlo ao utilizador

Aplicao Interface do Utilizador

Utilizador
Nelson Freire (ISEPDEI-PPROG 2012/13) 5/332

Introduo Consola Interface Textual Entrada

Tipos de Interface do Utilizador

Suportada por comandos escritos via teclado Sada Suportada por texto impresso no monitor Grfica ( GUI - Graphical User Interface )

Baseada
Janelas do Sistema Operativo

Constitudas por objetos


Entrada

Suportada por objetos de janelas


Indicados atravs de rato e/ou teclado

Sada
Suportada objetos de janelas

Nelson Freire (ISEPDEI-PPROG 2012/13)

6/332

Introduo GUI Constitudo por objetos Por exemplo

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

7/332

Introduo Componentes Objetos

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

Toolkits Java para GUI


// Componentes
// Componentes especiais, para grficos 2D de alta-qualidade // Gestores de Posicionamento // Tratamento de Eventos

Swing
Java 2D AWT

Diagrama de Tecnologias Java Standard Edition 7

(http://docs.oracle.com/javase/7/docs/index.html)

Nelson Freire (ISEPDEI-PPROG 2012/13)

9/332

Introduo AWT (Abstract Window Toolkit)

Histria dos Toolkits AWT e Swing

1 Toolkit Java para construir GUIs


Introduzido pelo JDK 1.0

Componentes apresentavam limitaes


Qualidade Grfica e Funcional < Plataformas Nativas mais ricas (Windows e Macintosh)

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

Estilo dos componentes


Independente do Sistema Operativo

Fornecidos vrios estilos


Classes Swing

Swing AWT

Componentes Eventos Gestores de Posicionamento

package javax.swing
Nome comeado por J Em geral
Nelson Freire (ISEPDEI-PPROG 2012/13)

10/332

Introduo Formas Visual Programada

Construo de um GUI

1/3

Nelson Freire (ISEPDEI-PPROG 2012/13)

11/332

Introduo Visual Usando Editor GUI

Construo de um GUI
Netbeans - Editor GUI

2/3

Exemplo
Editor GUI do Netbeans Classe JFrame Form Programador

Desenha interface grfico


Altera propriedades objetos Editor GUI Cria cdigo

Automaticamente
Simples criar GUI

Nelson Freire (ISEPDEI-PPROG 2012/13)

12/332

Introduo Programada Escrita de cdigo GUI Programador

Construo de um GUI

3/3

Precisa de conhecer cdigo GUI


Cdigo mais simples Do que forma desenhada Estudada Em PPROG

Netbeans - Editor de Cdigo Fonte

Nelson Freire (ISEPDEI-PPROG 2012/13)

13/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

Nelson Freire (ISEPDEI-PPROG 2012/13)

14/332

Componentes Introduo

Sumrio

Introduo Categorias de Componentes

Controlos Bsicos
Apresentao de Informao Contentores de Componentes Estilos dos Componente Swing Exemplos

Java
Windows Demos

Nelson Freire (ISEPDEI-PPROG 2012/13)

15/332

Componentes Introduo

Categorias de Componentes

Controlos Bsicos Apresentao de Informao

Editvel
No Editvel Contentores de Componentes Nvel Superior Genricos Especiais

Nelson Freire (ISEPDEI-PPROG 2012/13)

16/332

Componentes Introduo

Controlos Bsicos
Classe
JButton

1/3
Representao Grfica

Componente
Boto de Comando

Interesse
Ordenar execuo de comando.

Menu

JMenu

Escolher um comando entre mltiplos alternativos; Vantagem: No ocupa espao do interface.

Caixa de Verificao

JCheckBox Escolher mltiplas opes em simultneo.

Nelson Freire (ISEPDEI-PPROG 2012/13)

17/332

Componentes Introduo

Controlos Bsicos
Classe JRadioButton Interesse Escolher uma opo entre mltiplas alternativas.

2/3
Representao Grfica

Componente Boto de Opo

Caixa de Combinao

JComboBox

Editar e escolher itens de uma lista de strings.

Caixa de Listagem

JList

Escolher mltiplos itens apresentados numa ou mais colunas.

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Componente Campo de Texto Campo de Password Corredia

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.

Nelson Freire (ISEPDEI-PPROG 2012/13)

19/332

Componentes Introduo

Apresentao de Informao : Editvel


Classe Interesse

1/3

Informao pode ser modificada por utilizador Componente

Escolha de Cor

JColorChooser

Escolher cor a partir de paleta de cores.

Nelson Freire (ISEPDEI-PPROG 2012/13)

20/332

Componentes Introduo

Apresentao de Informao : Editvel


Classe JTextArea JEditorPane Interesse Mostrar e editar texto sem estilo e em mltiplas linhas.

2/3

Componente rea de Texto Painel de Edio

Mostrar e editar texto com estilo nativo ou definido pelo utilizador.

Nelson Freire (ISEPDEI-PPROG 2012/13)

21/332

Componentes Introduo

Apresentao de Informao : Editvel


Classe
JFileChooser

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

22/332

Componentes Introduo

Apresentao de Informao: No Editvel

Informao No pode ser alterada pelo utilizador Interesse Geral

Apenas informar utilizador


Tipos Componente Label Classe JLabel Interesse Mostrar imagem e/ou texto no editvel. Mostrar graficamente a quantidade de trabalho total completado. Mostrar linha divisria horizontal ou vertical; usado normalmente em menus e barras de ferramentas. Mostrar dica sobre componente GUI. Representao Grfica

Barra de Progresso Separador

JProgressBar JSeparator

Dica

JToolTip

Nelson Freire (ISEPDEI-PPROG 2012/13)

23/332

Componentes Introduo

Contentores

1/4

Interesse Geral Conterem outros componentes Categorias Nvel superior Genrico Especial

Nelson Freire (ISEPDEI-PPROG 2012/13)

24/332

Componentes Introduo

Contentores

2/4

Nvel Superior No podem ser includos noutros componentes Qualquer aplicao

Usa pelo menos um componente deste tipo


Tipos Componente Classe Interesse

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

Genricos Para uso geral Tipos Componente Classe Interesse

Painel
Painel de Deslocamento Painel Dividido

JPanel
JScrollPane JSplitPane

Criar painis para construo de GUI sofisticados.


Apresentar componente maior que espao disponvel para visualizao. Mostrar 2 componentes, lado-a-lado ou cima-baixo.

Painel de Separadores
Barra de Ferramentas

JTabbedPane Permitir espao partilhado por vrios componentes.


JToolBar Criar barras de ferramentas.

Nelson Freire (ISEPDEI-PPROG 2012/13)

26/332

Componentes Introduo

Contentores

4/4

Especiais Para uso particular Tipos Componente Janela Interna Classe JInternalFrame Interesse Criar janelas internas numa janela.

Layered Pane Root Pane

JLayeredPane JRootPane

Posicionar componentes num sistema de coordenadas tridimensional (em camadas). Presente em contentores de nvel superior e em janelas internas.

Representao Grfica

Nelson Freire (ISEPDEI-PPROG 2012/13)

27/332

Componentes Introduo

Estilos dos Componentes Swing (Look and Feel)


// por omisso

1/2

Exemplos Java (Metal) Windows

Java

Windows
Java

Java

Windows

Windows
Nelson Freire (ISEPDEI-PPROG 2012/13) 28/332

Componentes Introduo

Estilos dos Componentes (Look and Feel)

2/2

Alterao No-programada 1. Abrir o ficheiro jre/lib/swing.properties // subdiretrio instalao do Java

2. Redefinir propriedade swing.defaultlaf


Usando o nome da classe do LaF pretendido

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

// Local: C:\Program Files\Java\ jdk1.6.0_16\demo\jfc\SwingSet2

Nelson Freire (ISEPDEI-PPROG 2012/13)

30/332

Componentes Introduo

Demos

2/2

Exemplo (2/2) Cdigo Fonte

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

32/332

Componentes Hierarquia

Sumrio

Hierarquia de Classes Superclasses Component Container JComponent

Nelson Freire (ISEPDEI-PPROG 2012/13)

33/332

Hierarquia de Classes

Hierarquia de Classes de Componentes


Object
AWT

SWING

Component Container Window Frame

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

34/332

Superclasses

Classe Component

1/7

Package
java.awt Declarao public abstract class Component extends Object

implements ImageObserver, MenuContainer, Serializable { ... }


Classe Abstrata

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

Tenham representao grfica num monitor


Suportem interao com utilizador
Nelson Freire (ISEPDEI-PPROG 2012/13) 35/332

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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.

public static final float RIGHT_ALIGNMENT = 1.0f;

Constante para especificar o alinhamento direita do componente.

Nelson Freire (ISEPDEI-PPROG 2012/13)

37/332

Superclasses

Classe Component

4/7

Mtodos (1/4)
Relacionados com representao grfica dos componentes Mais usados
Declarao Funcionalidade

public void setMinimumSize( Dimension minimumSize )


Exemplo: obj.setMinimumSize( new Dimension(10,30) ); public void setMaximumSize( Dimension maximumSize ) Exemplo:

Modifica o tamanho mnimo do componente;


A unidade de medida o pixel.

Modifica o tamanho mximo do componente.

obj.setMaximumSize( new Dimension(20,40) );


public void setSize( int width, int height ) Especifica o tamanho do componente (largura=width e altura=height);

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

38/332

Superclasses

Classe Component
Declarao Funcionalidade Altera o tamanho preferido do componente; usado pelos gestores de posicionamento.

5/7

Mtodos (2/4)

public void setPreferredSize( Dimension preferredSize ) Exemplo:

obj.setPreferredSize(new Dimension(20,40) ); public void setBounds(int x, int y, int width, int height)
(0,0) y x Componente Contentor

Move o componente e altera o seu tamanho;


A nova localizao do canto superior esquerdo especificada por x e y; A nova dimenso especificada por width e height. Retorna tamanho do componente num objeto tipo Dimension.

public Dimension getSize()

JPanel JMenu

JLayeredPane JMenuItem

JRootPane JMenuBar

JScrollPane

JFrame

JDialog

JFileChooser

JButton

JLabel

JTextField

JList

JComboBox

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

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.

public void setFont( Font font )


Exemplo:

Especifica a font do componente.

obj.setFont( new Font ("Arial", Font.BOLD + Font.ITALIC, 20 ) );


public void setVisible(boolean b) Exemplo: obj.setVisible(true) ou obj.setVisible(false) Mostra ( setVisible(true) ) ou esconde ( setVisible(false) ) componente.

public void setEnabled( boolean b )


Exemplo: obj.setEnable(true) ou obj.setEnable(false)
JPanel JMenu JLayeredPane JMenuItem JRootPane JMenuBar JScrollPane JFrame JDialog JFileChooser JButton JLabel

Desinibe ou inibe componente de responder a aces do utilizador (interao).

JTextField

JList

JComboBox

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

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 );

Especifica a cor do contedo do componente.

JPanel JMenu

JLayeredPane JMenuItem

JRootPane JMenuBar

JScrollPane

JFrame

JDialog

JFileChooser

JButton

JLabel

JTextField

JList

JComboBox

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Ordem na lista define


Ordem dos componentes dentro do contentor Frente-para-Trs Sem especificar ndice

Inseridos no fim da lista


Debaixo dos componentes adicionados anteriormente

Nelson Freire (ISEPDEI-PPROG 2012/13)

42/332

Superclasses

Classe Container

2/2

Mtodos Prprios Relacionados com operaes tpicas de contentores Mais usados


Declarao
public Component add(Component comp)
Exemplo: obj.add( new JPanel() ); public Component add(Component comp, int index) public Component getComponent(int n) public Component[] getComponents() public void remove(Component comp)

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.

public void remove(int index)


public void removeAll() public void setLayout( LayoutManager manager )

Remove o componente de ndice index do contentor.


Remove todos os componentes adicionados ao contentor. Altera o gestor de posicionamento.
JButton JLabel JTextField JList JComboBox JCheckBox JRadioButton

Exemplo: obj.setLayout(new FlowLayout();


JPanel JMenu JLayeredPane JMenuItem JRootPane JMenuBar JScrollPane JFrame JDialog JFileChooser

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

public void setBorder(Border border)


Exemplos: Bordo Vazio: painel.setBorder( new EmptyBorder(10,5,5,10) ); (10,5,5,10) = (topo, esquerda, base, direita)

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

Pede para componente adquirir foco de entrada (teclado).

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

public static final int DISPOSE_ON_CLOSE = 2;


public static final int EXIT_ON_CLOSE = 3;

Nelson Freire (ISEPDEI-PPROG 2012/13)

48/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

Nelson Freire (ISEPDEI-PPROG 2012/13)

49/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Painel Serve de contentor de componentes Interesse dos Painis

Permitir posicionamento preciso de componentes na GUI


Posicionamento: feito por objetos gestores de posicionamento associados ao painel

Preciso:
Exemplo

encaixando painis com diferentes gestores de posicionamento

GUI

Posicionamento dos Componentes do GUI (Layout)


Painel Gestor
Flowlayout

BorderLayout
Nmero de Cliques: 0

Label Boto de Comando Nelson Freire (ISEPDEI-PPROG 2012/13) 52/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Package javax.swing Declarao

public class JPanel extends JComponent


implements Accessible { ... }

Object Component Container JComponent JPanel Window


AWT

Classe Instancivel
Objetos so painis Gestor de Posicionamento por Omisso

FlowLayout

Frame
JFrame

SWING

Nelson Freire (ISEPDEI-PPROG 2012/13)

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() );

Cria painel com gestor de posicionamento layout passado por parmetro.

Nelson Freire (ISEPDEI-PPROG 2012/13)

55/332

Classe JPanel

Mtodos

Herdados Component Container JComponent Prprios Pouco usados

Nelson Freire (ISEPDEI-PPROG 2012/13)

56/332

Classe JPanel

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/panel.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

57/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

59/332

JLayeredPane

Declarao

Package javax.swing Declarao

public class JLayeredPane extends JComponent


implements Accessible { ... } Object

Component
Container JComponent JLayeredPane

AWT

Window Frame JFrame

SWING

Nelson Freire (ISEPDEI-PPROG 2012/13)

60/332

JLayeredPane

Construtores
Declarao Funcionalidade
Cria painel JLayeredPane.

public JLayeredPane() Exemplo: JLayeredPane lp = new JLayeredPane ();

Nelson Freire (ISEPDEI-PPROG 2012/13)

61/332

JLayeredPane

Mtodos

Herdados Component Container JComponent

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.

public void moveToFront(Component c)

public void setLayer(Component c, int layer, int position)

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

62/332

JLayeredPane

Adio de Componentes
// profundidade

Requer Especificao da camada Em Componentes Sobrepostos

Componente no Topo = Componente com Maior 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

Nelson Freire (ISEPDEI-PPROG 2012/13)

64/332

JLayeredPane

Exemplo: Camada com Mltiplos Componentes

Componente colocado por cima dos restantes componentes da mesma camada

Nelson Freire (ISEPDEI-PPROG 2012/13)

65/332

JLayeredPane

Uso do JLayeredPane

Em Componentes JFrame JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

66/332

JLayeredPane

Bibliografia

http://download.oracle.com/javase/tutorial/uiswing/components/layeredpane.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

67/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Geralmente No instanciada Objetos Usados nos Componentes Janelas Internas

Contentores de Nvel Superior


JFrame

JDialog
JApplet

Nelson Freire (ISEPDEI-PPROG 2012/13)

69/332

JRootPane

Estutura Interna

Root Pane contm Painis Layered Pane

Content Pane
Glass Pane Barra de Menus // Opcional

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

70/332

JRootPane

Layered Pane

Interesse Posicionar os componentes Content Pane

Barra de Menus
Adicionalmente

// opcional

Posicionar componentes em camadas

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

71/332

JRootPane

Content Pane

Interesse Contentor dos componentes visveis Exclundo Barra de Menus

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

72/332

JRootPane

Glass Pane

Por Omisso Invisvel Quando Visvel

Est frente dos outros painis


Transparente

Semelhante ao Vidro
Capacidade

Capturar Eventos de Entrada


Interesse Capturar eventos do root pane numa rea que contm mltiplos componentes Exemplo

Desativar eventos do rato numa rea com vrios componentes


Pintar rea que contm mltiplos componentes

Exemplo
Mostrar imagem sobre vrios componentes

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

73/332

JRootPane

Barra de Menus

Opcional Interesse Contentor de Menus

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

74/332

JRootPane

Declarao

Package javax.swing Declarao

public class JRootPane extends JComponent


implements Accessible { ... } Object

Component
Container JComponent JRootPane

AWT

Window Frame JFrame

SWING

Nelson Freire (ISEPDEI-PPROG 2012/13)

75/332

JRootPane

Construtores
Declarao Funcionalidade
Cria painel JRootPane.

public JRootPane() Exemplo: JRootPane rp = new JRootPane ();

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

76/332

JRootPane

Mtodos

Herdados Component Container JComponent Prprios


Declarao Funcionalidade

public void setJMenuBar(JMenuBar menubar) public JMenuBar getJMenuBar()

Especifica a barra de menus da janela. Retorna barra de menus.

public Container getContentPane()


public Component getGlassPane() public JLayeredPane getLayeredPane()

Retorna Content Pane.


Retorna Glass Pane. Retorna Layered Pane.

public void setDefaultButton(JButton defaultButton)

Especifica boto que ser acionado quando premida tecla Enter, independentemente de ser, ou no, o foco do teclado.

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

77/332

JRootPane

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html

JFrame

JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

78/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

80/332

JScrollPane

Declarao

Package javax.swing Declarao

public class JScrollPane extends JComponent


implements ScrollPaneConstants, Accessible { ... } Object

Component
Container JComponent JScrollPane

AWT

Window Frame JFrame

SWING
JList

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

82/332

JScrollPane

Mtodos

Herdados Component Container JComponent Prprio Exemplo


Declarao Funcionalidade

public void setWheelScrollingEnabled( boolean handleWheel )

Inibe/desinibe o deslocamento controlado pelo movimento da roda do rato.

JList

Nelson Freire (ISEPDEI-PPROG 2012/13)

83/332

JScrollPane

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html

JList

Nelson Freire (ISEPDEI-PPROG 2012/13)

84/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Criar Janelas de Nvel Superior Sem Moldura Sem Barra de Menus

Nelson Freire (ISEPDEI-PPROG 2012/13)

86/332

Classe Window

Declarao

Package java.awt Declarao public class Window extends Container implements Accessible { }

Object
Component Container Window
AWT

Nelson Freire (ISEPDEI-PPROG 2012/13)

87/332

Classe Window

Mtodos

Herdados Component Container

Prprios

Declarao public void pack()

Funcionalidade Modifica tamanho da Janela para mostrar todos os componentes com o seu tamanho preferido; Deve ser chamado aps adio de todos os componentes.

public void dispose()


public void setLocationRelativeTo( Component c )

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

88/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

90/332

Classe Frame

Mtodos

Herdados Component Container

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

91/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Criar Janelas Contentores de Componentes Nvel Superior

No pode estar dentro doutro componente


Exemplo

Representao Grfica

cone

Barra de Ttulo

Botes

Moldura

Nelson Freire (ISEPDEI-PPROG 2012/13)

93/332

Classe JFrame

Declarao

Package javax.swing Declarao

public class JFrame extends Frame


implements WindowConstants, Accessible, RootPaneContainer { ... }

Object

Component
Container Window Frame JFrame

AWT

SWING

Nelson Freire (ISEPDEI-PPROG 2012/13)

94/332

Classe JFrame

Estrutura Interna

Janela JFrame constituda por Moldura Painis // contentores de componentes GUI

Moldura

Janela do tipo JFrame

Nelson Freire (ISEPDEI-PPROG 2012/13)

95/332

Classe JFrame

Painis Prprios

Janela JFrame contm Root Pane

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

97/332

Classe JFrame

Construtores
(0,0)

Criam Janelas Invisveis Tamanho 0

Colocadas no canto superior esquerdo do ecr ponto (0,0) do ecr

(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.

Nelson Freire (ISEPDEI-PPROG 2012/13)

98/332

Classe JFrame

Mtodos

1/2

Herdados Component Container Window Frame Prprios (1/2) Mais usados

Declarao
public void setResizable( boolean resizable )

Funcionalidade
setResizable(false) impede utilizador de redimensionar janela.

public void setTitle( String title )


public void setJMenuBar(JMenuBar menubar)

Modifica ttulo da janela.


Especifica a barra de menus da janela.

public JMenuBar getJMenuBar()


public Container getContentPane()

Retorna barra de menus.


Retorna Content Pane.

public JRootPane getRootPane()


public Component getGlassPane() public JLayeredPane getLayeredPane()
Nelson Freire (ISEPDEI-PPROG 2012/13)

Retorna Root Pane.


Retorna Glass Pane. Retorna Layered Pane.
99/332

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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 {

public static void main(String[] args) {


ContadorGUI gui = new ContadorGUI ();

}
} Nelson Freire (ISEPDEI-PPROG 2012/13) 101/332

Classe JFrame

Exemplo
public class DemoJanela extends JFrame {

2/4

Cor de fundo da Janela do Content Pane

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();

}
}

Nelson Freire (ISEPDEI-PPROG 2012/13)

102/332

Classe JFrame

Exemplo

3/4

Janela sem Moldura

public class Demo extends JFrame { public Demo() {

super("Demo");
setUndecorated(true); setSize( 270, 150); setLocationRelativeTo(null); setVisible(true); }

}
public class Principal {

public static void main(String[] args) {


Demo gui = new Demo();

}
Frame

} 103/332

Nelson Freire (ISEPDEI-PPROG 2012/13)

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();

// para redimensionar imagem medida do painel

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

Classe JFrame

Resoluo do Ecr

Interesse Definir dimenses e posio da janela import java.awt.Toolkit;

Toolkit tk = Toolkit.getDefaultToolkit(); // getDefaultToolkit mtodo esttico

Dimension screenSize = tk.getScreenSize();


int screenWidth = screenSize.width;

int screenHeight = screenSize.height;

Nelson Freire (ISEPDEI-PPROG 2012/13)

105/332

Classe JFrame

Eventos
Tipos de Evento que Janela pode Gerar (1/2)
Container

1/4
Evento

Componente adicionado janela


Componente removido da janela

Janela escondida Component


Janela mostrado Janela movido Janela redimensionado Focus Janela adquire o foco

janela perde o foco


Tecla mantida premida Tecla libertada Tecla premida (toque) Clique no rato

Key

Rato entrou na janela


Rato saiu da janela Mouse Boto do rato premido Boto do rato libertado

Rato movido
Rato arrastado (premido + movido) Roda do rato movida

Nelson Freire (ISEPDEI-PPROG 2012/13)

106/332

Classe JFrame

Eventos
Tipos de Evento que Janela pode Gerar (2/2)
Janela abriu Janela fechou

2/4
Evento

Janela ficou activa


Window Janela ficou inactiva Janela ficou minimizada

Janela ficou restaurada (tamanho original)


Utilizador quer fechar Janela

Nelson Freire (ISEPDEI-PPROG 2012/13)

107/332

Boto de Comando

Eventos

3/4

Evento Window (1/2) Tratamento

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

Evento Window (2/2) Registo de objetos TrataEvento Declarao

public void addWindowListener( WindowListener l )


Exemplo:

Regista objeto para tratar evento do tipo Window.

public class Janela extends JFrame {


public Janela() { super("Demo"); ... addWindowListener( new TrataEvento() );

}
private class TrataEvento extends WindowAdapter {

public void windowClosing( WindowEvent e) { } }


}

Nelson Freire (ISEPDEI-PPROG 2012/13)

109/332

Classe JFrame

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

110/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Exemplos de Caixas de Dilogo Entrada Sada

Dependente de Janelas Destruio de janela Minimizao de janela


Nelson Freire (ISEPDEI-PPROG 2012/13)

destruio das caixas de dilogo dependentes esconde caixas de dilogo dependentes


112/332

Abertura de janela minimizada mostra caixas de dilogo dependentes

Caixas de Dilogo

Introduo

2/4

Tipos de Funcionamento Modal Modeless

Caixa Modal

Bloqueia acesso do utilizador janela pai (criadora da caixa)


Interesse Obrigar utilizador a interagir com caixa de dilogo Indispensvel para execuo da aplicao Caixa de Dilogo Modal Caixa Modeless No bloqueia acesso do utilizador janela pai Interesse Permitir ao utilizador a introduo de dados na janela pai

Caixa de Dilogo Modeless


Nelson Freire (ISEPDEI-PPROG 2012/13) 113/332

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

115/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Package javax.swing Declarao

public class JOptionPane extends JComponent


implements Accessible { ... }

Object Component

Container
JComponent JOptionPane Window Frame JFrame Dialog JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

117/332

JOptionPane

Interesse

Criar Caixas de Dilogo Para dilogos com utilizador Simples

Permitem
Ler

Mostrar
Funcionamento Modal

Informao - Utilizador

Nelson Freire (ISEPDEI-PPROG 2012/13)

118/332

JOptionPane

Tipos de Caixas JOptionPane


Componentes das Caixas

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

ComboBox // Escolha Objetos

119/332

JOptionPane

Criao de Caixas JOptionPane


JOptionPane.showConfirmDialog(...)

1/2

Usando Mtodos de Classe (static) JOptionPane.showMessageDialog(...)

Caixa de Mensagem JOptionPane.showInputDialog(...)

Caixa de Confirmao
JOptionPane.showOptionDialog(...)

Caixa de Entrada

Caixa de Opo

Nelson Freire (ISEPDEI-PPROG 2012/13)

120/332

JOptionPane

Criao de Caixas 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

Opes para testar opes (valores inteiros) JOptionPane.OK_OPTION


JOptionPane.CANCEL_OPTION JOptionPane.YES_OPTION JOptionPane.NO_OPTION
Nelson Freire (ISEPDEI-PPROG 2012/13)

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

public static void showMessageDialog( Component parent, Object message )


public static void showMessageDialog( Component parent, Object message, String title, int messageType) public static void showMessageDialog( Component parent, Object message, String title, int messageType, Icon icon ) Exemplo

Definio do parmetro parent garante caixa de dilogo frente desse componente

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

Opes para testar o retorno JOptionPane.OK_OPTION JOptionPane.CANCEL_OPTION JOptionPane.YES_OPTION JOptionPane.NO_OPTION Exemplo

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();

Nelson Freire (ISEPDEI-PPROG 2012/13)

124/332

JOptionPane

Caixa de Entrada
TextField Retorna texto inserido pelo utilizador

1/3

Funcionalidade Mostra mensagem e um dos seguintes componentes

Caixa de Entrada (Texto)

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") }

Caixa de Entrada (Objeto)

Nelson Freire (ISEPDEI-PPROG 2012/13)

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)

Caixa de Entrada (Texto)

Caixa de Entrada (Objeto)


126/332

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]);

Nelson Freire (ISEPDEI-PPROG 2012/13)

127/332

JOptionPane

Caixa de Opo

1/2

Funcionalidade Mostra uma mensagem e retorna a opo escolhida Botes de Opo

Podem ser personalizados


Definidos atravs de array de qualquer tipo referncia Caixa de Opo

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 )

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

130/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Interesse das Caixas de Dilogo

Navegao no Sistema de Ficheiros


P. ex., para suportar operaes de Abertura de ficheiro/pasta

Caixa open permite escolher Pasta Ficheiro para abrir


Processamento do ficheiro ou da pasta escolhida Responsabilidade da aplicao

Gravao de ficheiros
Caixa save permite escolher Pasta para gravar ficheiros Gravao de ficheiros Responsabilidade da aplicao

Nelson Freire (ISEPDEI-PPROG 2012/13)

132/332

JFileChooser

Funcionamento das Caixas de Dilogo


// janela que criou caixa

Modal Bloqueia acesso do utilizador janela pai Obriga utilizador a interagir com caixa Para regressar janela pai da caixa

Caixa de Dilogo Modal Janela Pai inacessvel ao utilizador

Nelson Freire (ISEPDEI-PPROG 2012/13)

133/332

JFileChooser

Tipos de Caixas de Dilogo

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

134/332

JFileChooser

Declarao da Classe

Package javax.swing Declarao

public class JFileChooser extends JComponent


implements Accessible { ... }

Object

Component
Container

JComponent JFileChooser

Window Frame JFrame Dialog JDialog

Nelson Freire (ISEPDEI-PPROG 2012/13)

135/332

JFileChooser

Construtores
Declarao Funcionalidade
Constri objeto JFileChooser usando a pasta do utilizador, por omisso;

Mais usados

public JFileChooser() Exemplo: JFileChooser fc = new JFileChooser();

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.

Nelson Freire (ISEPDEI-PPROG 2012/13)

136/332

JFileChooser

Mtodos

1/2

Herdados Component Container JComponent Prprios (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;

JFileChooser fc = new JFileChooser();


int resp = fc.showSaveDialog(this); ....
Nelson Freire (ISEPDEI-PPROG 2012/13)

Tipos de retorno (tipo int):


JFileChooser.CANCEL_OPTION

// this=janela pai

if( resp == JFileChooser.APPROVE_OPTION)

JFileChooser.APPROVE_OPTION
JFileChooser.ERROR_OPTION
137/332

JFileChooser

Mtodos
Declarao Funcionalidade

2/2

Prprios (2/2)

public int showDialog(Component parent, String approveButtonText) Exemplo:

JFileChooser fc = new JFileChooser();


int resp = fc.showDialog(this, "Anexar"); if( resp == JFileChooser.APPROVE_OPTION) ....

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

Retorna ficheiro selecionado num objeto File.

Nelson Freire (ISEPDEI-PPROG 2012/13)

138/332

JFileChooser

Exemplo: Abertura de Ficheiro


// JTextArea

1/2

Ficheiro de Texto Lido para rea de texto

Nelson Freire (ISEPDEI-PPROG 2012/13)

139/332

JFileChooser

Exemplo: Abertura de Ficheiro

2/2

Nelson Freire (ISEPDEI-PPROG 2012/13)

140/332

JFileChooser

Exemplo: Gravao de Ficheiro

Nelson Freire (ISEPDEI-PPROG 2012/13)

141/332

JFileChooser

Personalizar Caixas de Dilogo

Exemplos:

Lista de opes completa:


http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizingaJFileChooserLookandFeel.htm

Nelson Freire (ISEPDEI-PPROG 2012/13)

142/332

JFileChooser

Filtrar Lista de Diretrios e Ficheiros


Por omisso Um file chooser lista todos os diretorios e ficheiros no escondidos

Exemplo Filtrar Diretrios e Ficheiros *.txt (usando objeto FileFilter)

Nelson Freire (ISEPDEI-PPROG 2012/13)

143/332

JFileChooser

Bibliografia

http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

144/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Package java.awt Declarao public class Dialog extends Window { }

Object
Component
AWT

Container JComponent
JOptionPane

Window
Dialog JDialog

SWING

Nelson Freire (ISEPDEI-PPROG 2012/13)

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, boolean modal )

public Dialog( Frame owner, String title ) public Dialog( Frame owner, boolean modal )

Nelson Freire (ISEPDEI-PPROG 2012/13)

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);

public void setResizable(boolean resizable)


public void setTitle(String title)

setResizable(false) impede utilizador de redimensionar janela.


Modifica ttulo da caixa de dilogo.

public void setVisible(boolean b)


public void setUndecorated(boolean undecorated)

Mostra ( setVisible(true) ) ou esconde ( setVisible(false) ) caixa de dilogo.


Inibe/desinibe moldura da caixa de dilogo; S pode ser chamado quando a caixa de dilogo no est visvel.

Nelson Freire (ISEPDEI-PPROG 2012/13)

148/332

Contentores

Sumrio

Contentores de Componentes Painis Noo de Painel Classe JPanel

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

150/332

Classe JDialog

Estrutura Interna

Semelhante da JFrame Contm Root Pane

Nelson Freire (ISEPDEI-PPROG 2012/13)

151/332

Classe JDialog

Declarao

Package javax.swing Declarao

public class JDialog extends Dialog


implements WindowConstants, Accessible, RootPaneContainer, TransferHandler.HasGetTransferHandler { }

Object
Component Container
AWT

JComponent JOptionPane

Window
Dialog JDialog

SWING

Nelson Freire (ISEPDEI-PPROG 2012/13)

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, boolean modal)

public JDialog( Frame owner, String title ) public JDialog( Frame owner, boolean modal)

Nelson Freire (ISEPDEI-PPROG 2012/13)

153/332

Classe JDialog

Mtodos

Herdados Component Container Window Dialog Prprios Declarao public void setLayout(LayoutManager manager) public void setJMenuBar(JMenuBar menuBar) Funcionalidade

Especifica o gestor de posicionamento do Content Pane.


Especifica a barra de menus da caixa de dilogo.

public JRootPane getRootPane()


public JLayeredPane getLayeredPane() public Component getGlassPane()

Retorna Root Pane.


Retorna Layered Pane. Retorna Glass Pane.

public Container getContentPane()

Retorna Content Pane.

Nelson Freire (ISEPDEI-PPROG 2012/13)

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)

public void setDefaultCloseOperation(int operation)

Exemplo:
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE)

Por omisso, boto close executa a operao HIDE_ON_CLOSE.

Nelson Freire (ISEPDEI-PPROG 2012/13)

155/332

Classe JDialog

Implementao de Caixa de Dilogo

1/5

Procedimento 1. Criar nova classe derivada da classe JDialog 2. Criar construtor da nova classe

Definir parmetro tipo JFrame


Para passar janela pai da caixa de dilogo // Garante caixa mostrada sobre essa janela

3. Invocar construtor da superclasse JDialog


Parmetros a definir

JFrame
Ttulo Flag booleana modal modeless

pai da caixa
da caixa de dilogo para indicar tipo de funcionamento da caixa true false

4. Posicionar caixa de dilogo


public class DialogPatrao extends JDialog { public DialogPatrao( JFrame pai ) {

super(pai, "Criao de um novo Patro", true);


setLocation( pai.getX() + 100, pai.getY() + 100);

// caixa de dilogo modal

}
} Nelson Freire (ISEPDEI-PPROG 2012/13) 156/332

Classe JDialog

Implementao de Caixa de Dilogo

2/5

5. Tornar caixa de dilogo visvel

public class DialogPatrao extends JDialog {


public DialogPatrao( JFrame pai ) { super(pai, "Criao de um novo Patro", true); setLocation( pai.getX() + 100, pai.getY() + 100); setVisible(true); // caixa de dilogo modal

}
}

Nelson Freire (ISEPDEI-PPROG 2012/13)

157/332

Classe JDialog

Implementao de Caixa de Dilogo

3/5

6. Adicionar componentes GUI caixa de dilogo


public class DialogPatrao extends JDialog {
private JTextField txtNome, txtSalario; private JButton btOK, btCancelar;

public DialogPatrao( JFrame pai ) {


super( pai, "Criao de um novo Patro", true );

setLayout( new GridLayout(3, 1) );


JPanel p1 = new JPanel(); JLabel label; label = new JLabel("Nome: "); p1.add(label); txtNome = new JTextField(20); p1.add(txtNome); add(p1); JPanel p2 = new JPanel(); label = new JLabel( "Salrio: " ); p2.add( label ); txtSalario = new JTextField( 20 ); p2.add( txtSalario ); add( p2 ); JPanel p3 = new JPanel(); btOK = new JButton( "OK" ); getRootPane().setDefaultButton( btOK ); p3.add( btOK ); btCancelar = new JButton( "Cancelar" ); p3.add( btCancelar ); add( p3 ); pack(); setLocation( pai.getX() + 100, pai.getY() + 100); setVisible(true);
}}

Nelson Freire (ISEPDEI-PPROG 2012/13)

158/332

Classe JDialog

Implementao de Caixa de Dilogo

4/5

7. Criar classe de objetos para tratarem eventos gerados pela caixa de dilogo
public class DialogPatrao extends JDialog {

private JTextField txtNome, txtSalario; private JButton btOK, btCancelar;


public DialogPatrao( JFrame pai ) { }

private class TrataEvento implements ActionListener {


public void actionPerformed( ActionEvent e ) { if ( e.getSource() == btCancelar) dispose(); else if ( txtNome.getText().isEmpty() ) { JOptionPane.showMessageDialog( DialogPatrao.this, "Por favor, introduza nome Patro.", "Criao de um novo patro", JOptionPane.WARNING_MESSAGE ); txtNome.requestFocus(); } else { Transferncia de Dados float salario; try { Para a classe Dados, salario = Float.parseFloat( txtSalario.getText() ); responsvel pelo Dados.guardar(new Patrao( txtNome.getText(), salario )); armazenamento de dispose(); dados da aplicao. } catch ( NumberFormatException ex ) { JOptionPane.showMessageDialog( DialogPatrao.this, "Tem de introduzir um valor numrico no campo 'Salario'.", "Criao de um novo Patro", JOptionPane.WARNING_MESSAGE); txtSalario.requestFocus();
} } } } }

Nelson Freire (ISEPDEI-PPROG 2012/13)

159/332

Classe JDialog

Implementao de Caixa de Dilogo

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 ) {

TrataEvento t = new TrataEvento();

JPanel p3 = new JPanel();


btOK = new JButton( "OK" ); getRootPane().setDefaultButton( butOK );

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

161/332

Componentes Informao

Sumrio

Apresentao de Informao Classe JLabel

Classe JSeparator

Nelson Freire (ISEPDEI-PPROG 2012/13)

162/332

Classe JLabel Apresentao No-Editvel Texto Simples Formatado (HTML)

Interesse

// Linha de Texto

// JLabel c/ Bordo

Imagem

Texto e Imagem

Nelson Freire (ISEPDEI-PPROG 2012/13)

163/332

Classe JLabel Package javax.swing Declarao

Declarao

public class JLabel extends JComponent implements SwingConstants, Accessible { ... }

Object
Component Container JComponent JLabel

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Classe JLabel Declarao

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.

public JLabel( Icon image )


Exemplo:

JLabel lblAguia = new JLabel( new ImageIcon("aguia.jpg") );


public JLabel( Icon image, int horizontalAlignment ) Exemplo: JLabel lblAguia = new JLabel( new ImageIcon("aguia.jpg"), JLabel.LEFT); public JLabel( String text, Icon icon, int horizontalAlignment )

Cria objeto JLabel com imagem especificada, centrada na vertical e horizontal.


Cria objeto JLabel com imagem especificada, centrada na vertical e com alinhamento horizontal especificado. Cria objeto JLabel com texto, imagem e alinhamento horizontal especificados, centrados na vertical.
166/332

Nelson Freire (ISEPDEI-PPROG 2012/13)

Classe JLabel Herdados Component Container JComponent Prprios (1/2)

Mtodos

1/2

Declarao
public void setText(String text)

Funcionalidade
Especifica texto.

Ex: JLabel lblAguia = new JLabel();


lbl.setText("guia");

public String getText()


Ex: String texto = lbl.getText();

Retorna texto.

public void setIcon( Icon defaultIcon )


Ex: lbl.setIcon(new ImageIcon("aguia.jpg") ); public void setIconTextGap(int iconTextGap)

Especifica imagem.

Especifica intervalo entre texto e imagem.

Ex: lbl.setIconTextGap( 10 );
Nelson Freire (ISEPDEI-PPROG 2012/13) 167/332

Classe JLabel Prprios (2/2)

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 );

Especifica alinhamento vertical do texto e imagem;

Opes de alinhamento: SwingConstants.CENTER SwingConstants.TOP SwingConstants.BOTTOM


JLabel.CENTER JLabel.TOP JLabel.BOTTOM

public void setHorizontalAlignment( int alignment )


Exemplo 1: JLabel lblAguia = new JLabel("guia"); lblAguia.setHorizontalAlignment( SwingConstants.LEFT ); Exemplo 2: JLabel lblAguia = new JLabel("guia"); lblAguia.setHorizontalAlignment( JLabel.LEFT );

Especifica alinhamento horizontal do texto e imagem;


Opes de alinhamento: SwingConstants.CENTER SwingConstants.RIGHT SwingConstants.LEFT

JLabel.CENTER JLabel.RIGHT JLabel.LEFT

Nelson Freire (ISEPDEI-PPROG 2012/13)

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);
}

Cdigo mais Completo


Nelson Freire (ISEPDEI-PPROG 2012/13) 169/332

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

Tecla premida (toque)


Clique no rato Rato entrou na label Rato saiu da label Mouse

Boto do rato premido


Boto do rato libertado Rato movido Rato arrastado (premido + movido) Roda do rato movida

Nelson Freire (ISEPDEI-PPROG 2012/13)

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.

TrataEvento t = new TrataEvento();


lbl.addMouseListener( t );
Nelson Freire (ISEPDEI-PPROG 2012/13) 171/332

Classe JLabel

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/label.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

172/332

Componentes Informao

Sumrio

Apresentao de Informao Classe JLabel

Classe JSeparator

Nelson Freire (ISEPDEI-PPROG 2012/13)

173/332

Classe JSeparator

Interesse

Separar Componentes Qualquer parte do GUI Separador = Linha Exemplos Menus

Separador de grupos lgicos de itens de menus

// separador horizontal

Barra de Ferramentas
Separador de Ferramentas // separador vertical

Nelson Freire (ISEPDEI-PPROG 2012/13)

174/332

Classe JSeparator

Declarao

Package javax.swing Declarao

public class JSeparator extends JComponent implements SwingConstants, Accessible { ... }

Object Component Container JComponent JSeparator

Nelson Freire (ISEPDEI-PPROG 2012/13)

175/332

Classe JSeparator

Construtores
Declarao Funcionalidade

public JSeparator()
Exemplo:

Cria separador horizontal.

JSeparator sp1 = new JSeparator ();


public JSeparator( int orientation ) Exemplos: JSeparator sp1 = new JSeparator (JSeparator.VERTICAL); Ex: JSeparator sp2 = new JSeparator (JSeparator.HORIZONTAL); Cria separador horizontal ou vertical.

Nelson Freire (ISEPDEI-PPROG 2012/13)

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 );

Nelson Freire (ISEPDEI-PPROG 2012/13)

177/332

Classe JSeparator

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/separator.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

179/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

180/332

Hierarquia de Classes

Hierarquia de Classes de Controlos Bsicos


Object
AWT

SWING

Component Container Window Frame

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

Controlos Bsicos em PPROG

Nelson Freire (ISEPDEI-PPROG 2012/13)

181/332

Superclasses Package javax.swing Declarao

Classe AbstractButton

1/4

public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants { ... }

Object

Component Container JComponent


AbstractButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

182/332

Superclasses Mtodos Prprios (1/3) Declarao

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

public void setHorizontalAlignment( int alignment )

Exemplos:

Especifica alinhamento horizontal do texto e cone; Opes de alinhamento: SwingConstants.CENTER (por omisso) SwingConstants.RIGHT SwingConstants.LEFT

JButton

JMenu

JMenuItem

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

183/332

Superclasses Mtodos Prprios (2/3) Declarao

Classe AbstractButton
Funcionalidade
Especifica a posio vertical do texto relativamente ao cone; Opes:

3/4

public void setVerticalTextPosition( int textPosition ) Exemplos:

SwingConstants.CENTER (por omisso)


SwingConstants.TOP SwingConstants.BOTTOM public void setHorizontalTextPosition( int textPosition ) Exemplos: Especifica a posio horizontal do texto relativamente ao cone; Opes: SwingConstants.RIGHT (por omisso) SwingConstants.LEFT SwingConstants.CENTER public void setText( String text ) Especifica texto: simples ou formatado por HTML.

public String getText()

Retorna o texto.

JButton

JMenu

JMenuItem

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

184/332

Superclasses Mtodos Prprios (3/3)

Classe AbstractButton
Declarao Funcionalidade
Especifica o cone.

4/4

public void setIcon( Icon defaultIcon )

public void setDisabledIcon( Icon disabledIcon )


Exemplo: bt.setDisabledIcon ( new ImageIcon("c:\\x.gif") ); public void setRolloverIcon( Icon rolloverIcon )

Especifica cone para boto inibido.

Exemplo:
bt.setRolloverIcon( new ImageIcon("c:\\tips.gif") ); public void setIconTextGap( int iconTextGap ) Exemplo:

Especifica novo cone passagem do apontador do rato.

Especifica intervalo entre texto e cone.

JButton

JMenu

JMenuItem

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

185/332

Superclasses Package javax.swing Declarao

Classe JToggleButton

1/4

public abstract class JToggleButton extends AbstractButton implements Accessible { ... }

Object Component Container JComponent

AbstractButton
JToggleButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

186/332

Superclasses Interesse

Classe JToggleButton

2/4

Implementao de botes de dois estados Selecionado Desselecionado Herdada pelas classes JCheckBox

JRadioButton

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

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");

Cria boto visvel com texto.

public JToggleButton( Icon icon )


Exemplo:

Cria boto visvel com cone.

JToggleButton tbtCancelar = new JToggleButton( new ImageIcon("x.gif"));


public JButton( String text, Icon icon ) Exemplo: Icon icon = new ImageIcon("x.gif"); JToggleButton tbtCancelar = new JToggleButton("Cancelar", icon ); Cria boto visvel com cone e texto.

Nelson Freire (ISEPDEI-PPROG 2012/13)

188/332

Superclasses Bibliografia

Classe JToggleButton

4/4

http://docs.oracle.com/javase/tutorial/uiswing/components/button.html

JCheckBox

JRadioButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

189/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

190/332

Boto de Comando

Interesse

Permitir ao Utilizador Ordenar execuo de comando (i.e.,ao)

Nelson Freire (ISEPDEI-PPROG 2012/13)

191/332

Boto de Comando

Declarao

Package javax.swing Declarao public class JButton extends AbstractButton implements Accessible { ... }

Object
Component Container JComponent AbstractButton

JButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

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");

public JButton( Icon icon )


Exemplo:

JButton btCancelar = new JButton(new ImageIcon("x.gif"));


public JButton( String text, Icon icon ) Exemplo: JButton btCancelar = new JButton("Cancelar", new ImageIcon("x.gif"));

Cria objeto JButton visvel com cone.


Cria objeto JButton visvel com cone e texto.

Por omisso Boto visvel


Nelson Freire (ISEPDEI-PPROG 2012/13) 193/332

Boto de Comando

Classe JButton

Mtodos Herdados Component

Container
JComponent AbstractButton Prprios Declarao public void setText(String text) public String getText() Funcionalidade Especifica o texto (simples ou HTML). Retorna o texto.

public void setIcon( Icon defaultIcon )


public void setIconTextGap(int iconTextGap)

Especifica o cone.
Especifica o intervalo entre texto e cone.

Nelson Freire (ISEPDEI-PPROG 2012/13)

194/332

Boto de Comando

Classe JButton
Cdigo Incompleto
public class ContadorGUI extends JFrame {

Exemplo

private static String s = "Nmero de Cliques: ";


private JLabel lblNumero; private JButton btIncrementar, btReiniciar; public ContadorGUI() { super("Contador de Cliques"); lblNumero = new JLabel(s + "0");

btIncrementar = new JButton("Incrementar");


btReiniciar = new JButton("Reiniciar"); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 270, 150);

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

Boto adquire o foco


Boto perde o foco Tecla mantida premida Tecla libertada Tecla premida (toque)

Key

Clique no rato
Rato entrou no boto Rato saiu do boto Mouse Boto do rato premido

Boto do rato libertado


Rato movido Rato arrastado (premido + movido) Roda do rato movida

Nelson Freire (ISEPDEI-PPROG 2012/13)

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.

Nelson Freire (ISEPDEI-PPROG 2012/13)

197/332

Boto de Comando

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/button.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

198/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

199/332

Entrada de Texto

Componentes de Entrada de Texto

Permitem ao utilizador da aplicao Introduo de texto Edio de texto Tipos de Componentes Swing JTextField Object Component Container JComponent Window

Aceita uma s linha de texto


JTextArea Pode aceitar mltiplas linhas de texto JPasswordField Aceita s uma linha de texto Esconde texto introduzido JFormattedTextField

JTextComponent JTextArea JPasswordField JTextField

Frame JFrame

Para entradas especificas


Exemplos Datas e Endereos IP Herdam Classe JTextComponent

JFormattedTextField

Classe abstrata
No instancivel
Nelson Freire (ISEPDEI-PPROG 2012/13) 200/332

JTextComponent

Interesse

Classe base de componentes swing de texto Caratersticas comuns

Object
Component Container

JComponent
JTextComponent JTextArea JPasswordField JTextField

Window Frame JFrame

JFormattedTextField

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

202/332

JTextComponent

Mtodos

Herdados Component Container JComponent Prprios

Mais usados
Declarao public void setText( String t ) Funcionalidade Especifica texto t para o componente;

setText(null) ou setText("") elimina texto do componente.


public String getText( ) Retorna texto contido no componente.

public void setEditable(boolean b)

Especifica se o texto pode ou no ser editado.

JTextField

Nelson Freire (ISEPDEI-PPROG 2012/13)

203/332

JTextField

Interesse

Entrada de Texto Simples Linha de texto Exemplo

Nelson Freire (ISEPDEI-PPROG 2012/13)

204/332

JTextField

Declarao

Package javax.swing Declarao public class JTextField extends JTextComponent implements SwingConstants { ... }

Object Component Container JComponent

JTextComponent
JTextField

Nelson Freire (ISEPDEI-PPROG 2012/13)

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.

public JTextField( String text , int columns )

Cria campo de texto inicializado com texto e n de colunas especificados.

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

207/332

JTextField

Eventos
Evento

1/2

Tipos de Evento que Campo de Texto pode Gerar

Action
Container

Terminada edio (tecla ENTER premida)


Componente adicionado ao campo de texto

Componente removido do campo de texto


Campo de texto escondido

Component

Campo de texto mostrado Campo de texto movido


Campo de texto redimensionado Campo de texto adquire o foco de entrada Campo de texto perde o foco de entrada

Focus

Tecla mantida premida Key


Tecla libertada Tecla premida (toque) Clique no rato Rato entrou no campo de texto

Rato saiu do campo de texto


Mouse Boto do rato premido Boto do rato libertado Rato movido

Rato arrastado (premido + movido) Roda do rato movida


Text Texto alterado

Nelson Freire (ISEPDEI-PPROG 2012/13)

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 );

Nelson Freire (ISEPDEI-PPROG 2012/13)

209/332

JTextField

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

210/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

212/332

Menu Sistema de Menus Estrutura Hierrquica Menus organizados Vrios nveis Constitudo

Constituio de Sistema de Menus

Barra de Menus
Contm Menus Contm Itens de Menu Separadores Submenus Barra de Menus Menu Item de Menu Separador de Itens

Componentes de um Sistema de Menus

Nelson Freire (ISEPDEI-PPROG 2012/13)

213/332

Menu Colocada Topo da janela Acima do Content Pane Constituda Menus de nvel superior

Barra de Menus

Clique no nome de menu


Abre menu

Torna visvel

Colocao da Barra de Menus

Barra de Menus

Abertura de um Menu
Nelson Freire (ISEPDEI-PPROG 2012/13) 214/332

Menu Classes de Componentes JMenuBar JMenu JMenuItem JSeparator Hierarquia

Componentes para Sistema de Menus


// Barra de Menus // Menus e Submenus // Itens de Menus // Separador de itens de menu // ou mtodo addSeparator() de JMenu

Object

Component
Container

JComponent
JSeparator JMenuBar AbstractButton JToggleButton JRadioButton JCheckBox
215/332

JMenuItem JMenu
Nelson Freire (ISEPDEI-PPROG 2012/13)

JButton

Menu Package javax.swing Declarao

Classe JMenuItem

1/2

public class JMenuItem extends AbstractButton


implements Accessible, MenuElement { ... }

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.

Ex: Icon ic1 = new ImageIcon("acerca.jpg");


JMenuItem mitAcerca = new JMenuItem("Acerca", ic1);

public JMenuItem( )
Ex: JMenuItem mitSair = new JMenuItem();
Nelson Freire (ISEPDEI-PPROG 2012/13)

Constri item de menu sem texto e sem cone.


216/332

Menu Mtodos Herdados Component Container JComponent AbstractButton Prprios (mais usados)

Classe JMenuItem

2/2

Declarao

Funcionalidade

public void setAccelerator(KeyStroke keyStroke)


Exemplos: JMenuItem mitAcerca = new JMenuItem("Acerca", 'A'); mitAcerca.setAcelerator( KeyStroke.getKeyStroke("ctrl A") );

Especifica o acelerador do item de menu;


Acelerador uma tecla ou combinao de teclas que aciona o item de menu sem necessidade de navegar pelo sistema de menus. Inibe/desinibe item de menu.
217/332

mitAcerca.setAcelerator( KeyStroke.getKeyStroke("alt A") ); mitAcerca.setAcelerator( KeyStroke.getKeyStroke('A') );


public void setEnabled(boolean b) Ex: mitAcerca.setEnable(false);
JMenu

Nelson Freire (ISEPDEI-PPROG 2012/13)

Menu Package javax.swing Declarao

Classe JMenu

1/2

public class JMenu extends JMenuItem


implements Accessible, MenuElement { ... }

Construtores
Declarao Funcionalidade

public JMenu( String text )


Exemplo:

Constri menu com texto especificado

JMenu mnuAjuda = new JMenu("Ajuda");


public JMenu( ) Constri menu sem texto

Exemplo:
JMenu mitSair = new JMenu();

Nelson Freire (ISEPDEI-PPROG 2012/13)

218/332

Menu Mtodos Herdados Component Container JComponent AbstractButton JMenuItem Prprios Mais usados Declarao

Classe JMenu

2/2

Funcionalidade Adiciona item de menu no fim do menu; Retorna o item adicionado.

public JMenuItem add( JMenuItem menuItem )

Exemplo:
JMenuItem mitAcerca = new JMenuItem("Acerca");

JMenu mnuAjuda = new JMenu("Ajuda");


mnuAjuda.add( mitAcerca ); public void addSeparator() Exemplo: mnuAjuda.addSeparator();
Nelson Freire (ISEPDEI-PPROG 2012/13) 219/332

Adiciona separador no fim do menu.

Menu Package javax.swing Declarao

Classe JMenuBar

1/2

public class JMenuBar extends JComponent


implements Accessible, MenuElement { ... }

Construtor
Declarao public JMenuBar( ) Exemplo: JMenuBar mb = new JMenuBar(); Funcionalidade Constri barra de menus.

Nelson Freire (ISEPDEI-PPROG 2012/13)

220/332

Menu Mtodos Herdados Component Container JComponent Prprio Mais usado Declarao

Classe JMenuBar

2/2

Funcionalidade

public JMenu add(JMenu c)


Exemplo JMenuBar mb = new JMenuBar(); JMenu mnuAjuda = new JMenu("Ajuda"); mb.add( mnuAjuda );

Insere menu especificado no fim da barra de menus.

Nelson Freire (ISEPDEI-PPROG 2012/13)

221/332

Menu Exemplo de Construo (sem tratar eventos)

Sistema de Menus

Criado item Abrir e adicionado no fim do Menu Projectos


Criado Menu Grupos e adicionado no fim do Menu Projectos Submenu

Nelson Freire (ISEPDEI-PPROG 2012/13)

222/332

Menu

Acesso aos Menus pelo Teclado

1/5

Menus suportam Acesso pelo Teclado Aumenta acessibilidade das aplicaes

Tipos de Acesso pelo Teclado

Mnemnicas
Aceleradores

Nelson Freire (ISEPDEI-PPROG 2012/13)

223/332

Menu Mnemnicas Teclas

Acesso aos Menus pelo Teclado


Permitem navegar pela hierarquia de menus

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

224/332

Menu Aceleradores Teclas de atalho Para itens de menu

Acesso aos Menus pelo Teclado

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

225/332

Menu

Acesso aos Menus pelo Teclado

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

Menu Implementao de Acelerador

Acesso aos Menus pelo Teclado

5/5

Usar mtodo setAccelerator public void setAccelerator( KeyStroke keyStroke )

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

Componente removido de menu/item


Menu/item escondido

Component

Menu/item mostrado Menu/item movido


Menu/item redimensionado Menu/item adquire o foco Menu/item perde o foco

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

Boto do rato libertado Rato movido


Rato arrastado (premido + movido) Roda do rato movida

Nelson Freire (ISEPDEI-PPROG 2012/13)

228/332

Menu Evento Action

Eventos
Clique Teclado

2/3

Iniciado por seleo de Menu ou Item de Menu atravs de

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

public void actionPerformed( ActionEvent e ) {


System.exit(0);

}
}); 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

Mtodo de Evento do Item Abrir

Mtodo de Evento do Item Fechar

Nelson Freire (ISEPDEI-PPROG 2012/13)

230/332

Menu

Bibliografia

http://download.oracle.com/javase/tutorial/uiswing/components/menu.html

http://www.faqs.org/docs/javap/c7/s5.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

231/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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)

Lista de Strings Lista de Caixas de Verificao

Alternativa Caixa de Combinao Mas mais complexa


Tem mais capacidades
Nelson Freire (ISEPDEI-PPROG 2012/13) 233/332

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

// adiciona elemento no final da lista

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)

Constri caixa de listagem que mostra elementos do array especificado;

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.

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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 int getSelectedIndex()

public int[] getSelectedIndices()

public E getSelectedValue()

Retorna item selecionado / com menor ndice no modo multi-seleo; Retorna null, sem item selecionado.

public List<E> getSelectedValuesList()

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.

Nelson Freire (ISEPDEI-PPROG 2012/13)

239/332

Caixa de Listagem

Listagem de Strings

Exemplo Lista de strings de tamanho fixo com painel de deslocamento

Nelson Freire (ISEPDEI-PPROG 2012/13)

240/332

Caixa de Listagem

Bibliografia

http://download.oracle.com/javase/tutorial/uiswing/components/list.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

241/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

242/332

Caixa de Combinao

Noo
Boto

1/2

Caixa de Combinao um componente Permite ao utilizador

Selecionar uma opo


Formas

Lista

No-Editvel
Editvel

// por omisso
(1) (2)

Caixa de Combinao No-Editvel


Combina os elementos Boto Lista Caixa de Combinao Editvel

Caixa de Combinao No-Editvel

(1 - Lista Escondida ; 2 - Lista Visvel)


Campo de Texto com Boto

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

Boto (Seta) Permite ao utilizador Visualizar a Lista

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

Caixa de Combinao No-Editvel

(1 - Lista Escondida ; 2 - Lista Visvel)


Campo de Texto com Boto

Lista

Caixa de Combinao Editvel


Nelson Freire (ISEPDEI-PPROG 2012/13) 244/332

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

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();

JComboBox<String> cbMarcas = new JComboBox(); public JComboBox( E[ ] items)


Exemplo 1

String[ ] marcas = "Audi", "BMW", "Fiat";


JComboBox cbMarcas = new JComboBox( marcas );

Constri caixa de combinao no-editvel que mostra os elementos do array especificado;


Por omisso:

Exemplo 2
String[ ] nums= "1","2","3","4","5","6","7","8","9";

Selecionada 1 opo da lista;


Comprimento mximo da lista = 8.

JComboBox cbDemo = new JComboBox( nums );

Nelson Freire (ISEPDEI-PPROG 2012/13)

247/332

Caixa de Combinao

Mtodos

Herdados Component Container JComponent Prprios (1/3)

Mais usados
Declarao Funcionalidade

public void setEditable(boolean aFlag)


Exemplo caixa de combinao editvel JComboBox cb1 = new JComboBox( ); cb1.setEditable(true); Exemplo caixa de combinao no-editvel JComboBox cb2 = new JComboBox( ); cb2.setEditable(false); public void setMaximumRowCount(int count) Exemplo cb1. setMaximumRowCount(5);
Nelson Freire (ISEPDEI-PPROG 2012/13)

Especifica forma da caixa de combinao:


Editvel; No-Editvel.

Especifica n mximo de opes visveis (comprimento mximo visvel da lista);

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)

public void addItem(E item) Exemplo JComboBox cbMarcas = new JComboBox( );

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.

public void removeItem(Object item)


Exemplo

Remove opo especificada.

cbMarcas.removeItem("Audi");
public void removeItemAt(int index) public void removeAllItems() Remove opo na posio especificada. Remove todas as opes da lista.

Nelson Freire (ISEPDEI-PPROG 2012/13)

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();

Nelson Freire (ISEPDEI-PPROG 2012/13)

250/332

Caixa de Combinao

Caixa de Combinao No-Editvel com Strings

Exemplo

Nelson Freire (ISEPDEI-PPROG 2012/13)

251/332

Caixa de Combinao

Eventos
Evento

1/2

Tipos de Evento que Caixa de Combinao pode Gerar

Action
Container

Selecionado item
Componente adicionado caixa de combinao

Componente removido da caixa de combinao


Caixa de combinao escondida

Component

Caixa de combinao mostrada Caixa de combinao movida


Caixa de combinao redimensionada Caixa de combinao adquire o foco de entrada Caixa de combinao perde o foco de entrada

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

Boto do rato libertado Rato movido


Rato arrastado (premido + movido) Roda do rato movida

Nelson Freire (ISEPDEI-PPROG 2012/13)

252/332

Caixa de Combinao

Eventos

2/2

Evento Action Iniciado por seleo de item Tratamento

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

public void actionPerformed( ActionEvent e ) {


// Mtodo de evento executado aps seleo de item

...
}

});

Nelson Freire (ISEPDEI-PPROG 2012/13)

253/332

Caixa de Combinao

Bibliografia

http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

254/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

255/332

Caixa de Verificao

Classe JCheckBox

Bibliografia http://docs.oracle.com/javase/tutorial/uiswing/components/button.html#checkbox

Nelson Freire (ISEPDEI-PPROG 2012/13)

256/332

Componentes Controlos Bsicos

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

257/332

Boto de Opo

Classe JRadioButton

Bibliografia http://docs.oracle.com/javase/tutorial/uiswing/components/button.html#radiobutton

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

259/332

Gestores Posicionamento

Sumrio

Noo

Tipos
Hierarquia de Classes Gestores de Posicionamento

BorderLayout
FlowLayout

GridLayout
CardLayout Combinao de Diferentes Tipos num GUI

Nelson Freire (ISEPDEI-PPROG 2012/13)

260/332

Gestores Posicionamento

Noo de Gestor de Posicionamento

Gestores de Posicionamento (Layout Managers) Objetos que gerem dinamicamente a posio de componentes dentro dos contentores Exemplo

Gestores de Posicionamento reposicionam componentes durante redimensionamento da janela

Gestores de Posicionamento colocam componentes no contentor

Contentor de Componentes

Nelson Freire (ISEPDEI-PPROG 2012/13)

261/332

Gestores Posicionamento

Tipos de Gestores de Posicionamento

Tipos de Gestores de Posicionamento Nativos Definidos pelo Programador

Nativos BorderLayout
FlowLayout Abordados aqui

GridLayout
CardLayout BoxLayout GridBagLayout GroupLayout SpringLayout

Nelson Freire (ISEPDEI-PPROG 2012/13)

262/332

Gestores Posicionamento

Hierarquia de Classes de Gestores de Posicionamento

Java Fornece uma Classe Para cada tipo de gestor Hierarquia de Classes

Object

package java.awt

is-a SpringLayout FlowLayout GridLayout

BorderLayout

LayoutManager2

implements is-a
LayoutManager

Serializable

interfaces

package java.io interface

Hierarquia de Classes de Gestores de Posicionamento


Nelson Freire (ISEPDEI-PPROG 2012/13) 263/332

Gestores Posicionamento

Gestores BorderLayout

1/12

Usados (por omisso)


Content Pane de componentes JFrame Interesse Permitir colocao precisa de componentes num contentor

Numa posio especfica


Exemplo Colocar a Meio: Colocar no Fundo: Nmero de Cliques Botes de Comando

Nelson Freire (ISEPDEI-PPROG 2012/13)

264/332

Gestores Posicionamento

Gestores BorderLayout

2/12

Funcionamento (1/3) Dividem um contentor em 5 regies Norte

Oeste
Centro Este Sul Colocam automaticamente um componente na regio Indicada pelo programa Centro // por omisso

Mltiplos componentes adicionados na mesma regio

Sobrepostos
Visvel

ltimo adicionado

Nelson Freire (ISEPDEI-PPROG 2012/13)

265/332

Gestores Posicionamento

Gestores BorderLayout

3/12

Funcionamento (2/3) Dimenses do componente adicionado Norte e Sul

Altura
Preferida do componente Modificvel via mtodo setPreferredSize() Largura Contentor Oeste e Este Largura Preferida do componente Altura

Altura Contentor Altura Norte Altura Sul


Centro Preenche toda a regio

Nelson Freire (ISEPDEI-PPROG 2012/13)

266/332

Gestores Posicionamento

Gestores BorderLayout

4/12

Funcionamento (3/3) Redimenso do contentor Em altura

Altera altura
Este

Centro
Oeste Em largura Altera largura Norte Centro Sul

Nelson Freire (ISEPDEI-PPROG 2012/13)

267/332

Gestores Posicionamento

Gestores BorderLayout

5/12

Configuraes de Funcionamento (1/2) Espao entre regies contguas Por omisso

Nulo
Exemplo

Modificvel pelo programa

Exemplo

Nelson Freire (ISEPDEI-PPROG 2012/13)

268/332

Gestores Posicionamento

Gestores BorderLayout

6/12

Configuraes de Funcionamento (2/2) Uso das regies opcional

Nelson Freire (ISEPDEI-PPROG 2012/13)

269/332

Gestores Posicionamento

Gestores BorderLayout

7/12

Classe (1/4) Declarao public class BorderLayout extends Object

implements LayoutManager2, Serializable { }

Object package java.awt is-a BorderLayout

implements
LayoutManager2

LayoutManager

Serializable

is-a interfaces

package java.io interface

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Classe (2/4) Construtores

public BorderLayout() public BorderLayout(int hgap, int vgap)

Intervalo horizontal = hgap pxeis


Intervalo vertical = vgap pxeis

Exemplos de Uso BorderLayout b1 = new BorderLayout();


BorderLayout b2 = new BorderLayout( 20, 30 ); vgap

hgap

Nelson Freire (ISEPDEI-PPROG 2012/13)

271/332

Gestores Posicionamento

Gestores BorderLayout
// mais usados Funcionalidade

9/12

Classe (3/4) Mtodos de Instncia Declarao

public void setHgap(int hgap)

Indica o intervalo horizontal entre componentes.


Unidade de medida o pixel.

public void setVgap(int vgap)

Indica o intervalo vertical entre componentes. Unidade de medida o pixel.

Exemplos de Uso BorderLayout b1 = new BorderLayout(); b1.setVgap(10); b1.setHgap(20);

Nelson Freire (ISEPDEI-PPROG 2012/13)

272/332

Gestores Posicionamento

Gestores BorderLayout

10/12

Classe (4/4) Campos de Classe (mais usados) Declarao Funcionalidade

public static final String NORTH = "North"; public static final String SOUTH = "South";
public static final String EAST = "East"; public static final String WEST = "West";

Valor indica regio Norte Valor indica regio Sul


Valor indica regio Este Valor indica regio Oeste

public static final String CENTER = "Center"; Exemplos de Uso


JPanel p = new JPanel( new BorderLayout() ); JLabel lbl1 = new JLabel("Norte");

Valor indica regio Centro

JLabel lbl2 = new JLabel("Este");


p.add( lbl1, BorderLayout.NORTH ); p.add( lbl2, BorderLayout.EAST );
Nelson Freire (ISEPDEI-PPROG 2012/13) 273/332

Gestores Posicionamento

Gestores BorderLayout

11/12

Exemplo Contador de Cliques


Posicionamento dos Componentes do GUI (Layout)

Painel BorderLayout

Centro

Sul

Painel

Gestor

FlowLayout
Nmero de Cliques: 0

BorderLayout

Label Boto de Comando

Nelson Freire (ISEPDEI-PPROG 2012/13)

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");

lblNumero = new JLabel(s + "0");


add( lblNumero, BorderLayout.CENTER );

btnIncrementar = new JButton("Incrementar");


btnReiniciar = new JButton("Reiniciar"); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 270, 150);

setLocationRelativeTo(null);
setVisible(true);

}
JLabel

} 275/332

Nelson Freire (ISEPDEI-PPROG 2012/13)

Gestores Posicionamento

Gestores FlowLayout

1/9

Usados (por omisso)


Paineis (Componentes JPanel) Interesse Posicionar componentes num contentor

Em linha
Exemplo Alinhar botes de comando na horizontal

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Configuraes de Funcionamento Alinhamento das linhas de componentes Esquerda

Direita
Centro

Intervalos entre componentes e entre componentes e bordo do contentor Vertical Horizontal

Nelson Freire (ISEPDEI-PPROG 2012/13)

278/332

Gestores Posicionamento

Gestores FlowLayout

4/9

Classe (1/3) Declarao public class FlowLayout extends Object

implements LayoutManager, Serializable { }

Object package java.awt is-a FlowLayout implements


LayoutManager Serializable

interface

package java.io interface

Nelson Freire (ISEPDEI-PPROG 2012/13)

279/332

Gestores Posicionamento

Gestores FlowLayout

5/9

Classe (1/3) Campos de Classe Declarao Funcionalidade

public static final int LEFT = 0;


public static final int CENTER = 1; public static final int RIGHT = 2;

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

280/332

Gestores Posicionamento

Gestores FlowLayout
// constroem novos objetos gestores FlowLayout Declarao Funcionalidade

6/9

Classe (2/3) Construtores

public FlowLayout()

Alinhamento de linhas centrado.


Intervalos horizontais e verticais entre componentes e entre componentes e o bordo de 5 pixeis.

public FlowLayout(int align) public FlowLayout(int align, int hgap, int vgap)

Alinhamento das linhas align.

Intervalos horizontais e verticais de 5 pixeis.


Alinhamento das linhas align. Intervalos horizontais e verticais de hgap e vgap pixeis, respetivamente. Exemplos de Uso FlowLayout f1 = new FlowLayout(); FlowLayout f2 = new FlowLayout( FlowLayout.LEFT); FlowLayout f3 = new FlowLayout( FlowLayout.RIGHT); FlowLayout f4 = new FlowLayout( FlowLayout.RIGHT, 20, 30 );
Nelson Freire (ISEPDEI-PPROG 2012/13) 281/332

Gestores Posicionamento

Gestores FlowLayout
// mais usados Funcionalidade

7/9

Classe (3/3) Mtodos de Instncia Declarao

public void setAlignment(int align)


public void setHgap(int hgap)

Indica alinhamento align do gestor FlowLayout


Indica intervalo horizontal entre componentes e entre componentes e bordo do contentor.

Unidade de medida o pixel.


public void setVgap(int vgap) Indica intervalo vertical entre componentes e entre componentes e bordo do contentor. Unidade de medida o pixel.

Exemplos de Uso
FlowLayout f1 = new FlowLayout(); f1.setAlignment( FlowLayout.LEFT ); f1.setVgap( 10 ); f1.setHgap( 20 ); // alinhamento especificado por campo de classe LEFT

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Label Boto de Comando Nelson Freire (ISEPDEI-PPROG 2012/13) 283/332

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");

JPanel p = new JPanel();


p.add(btnIncrementar); p.add(btnReiniciar); add(p,BorderLayout.SOUTH); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 270, 150); setLocationRelativeTo(null); setVisible(true); } }
JButton

Nelson Freire (ISEPDEI-PPROG 2012/13)

284/332

Gestores Posicionamento

Gestores GridLayout
// semelhante a folha de clculo

1/6

Divide contentor em Linhas e colunas Programador define n de linhas e n de colunas

Todas as clulas tm sempre o tamanho igual Componentes so redimensionados na mesma proporo do redimensionamento do contentor

Contentor GridLayout

Redimensionamento de Contentor GridLayout

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

pane.add( new JButton("Um") ); pane.add( new JButton("Dois") ); ...


Nelson Freire (ISEPDEI-PPROG 2012/13)

// ocupar posio (1,1) // ocupar posio (1,2)


286/332

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

GridLayout g = new GridLayout(5,0);


GridLayout g = new GridLayout(5,3); (5,0) (5,3)

Nelson Freire (ISEPDEI-PPROG 2012/13)

287/332

Gestores Posicionamento

Gestores GridLayout

4/6

Definio da Grid (2/3) N de Linhas > 0 Exemplos

GridLayout g = new GridLayout(9,0);


GridLayout g = new GridLayout(9,3); GridLayout g = new GridLayout(9,5);

(9,0) (9,3) (9,5)

Nelson Freire (ISEPDEI-PPROG 2012/13)

288/332

Gestores Posicionamento

Gestores GridLayout

5/6

Definio da Grid (3/3) N de Linhas = 0 N de colunas especificado relevante

Gestor maximiza uso de colunas


Exemplos N de Colunas = 1 GridLayout g = new GridLayout(0,1); Todos componentes colocados na mesma coluna N de Colunas = 3

GridLayout g = new GridLayout(0,3);


Componentes distribudos por 3 colunas

N de Colunas = 9
GridLayout g = new GridLayout(0,9);

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

i.e., mostrar um componente de cada vez, entre vrios


Em geral, esses componentes so contentores JPanel

Anlogo a uma pilha de cartes (ex: bancrios)


S o carto de cima visvel Carto um contentor de elementos Da, chamar cartes (cards) aos componentes geridos Troca do carto visvel Feita pela aplicao Pode ser originada pelo utilizador atravs de outros componentes Exemplo Botes de comando // guia, Drago e Leo Contentor CardLayout
Nelson Freire (ISEPDEI-PPROG 2012/13) 291/332

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

Mtodos de instncia CardLayout


public void first( ContainerCardLayout parent )

public void last(ContainerCardLayout parent )


Atravessando a pilha para o carto seguinte ( next ) ou carto anterior ( previous ) Segundo a ordem de adio dos cartes ao contentor Mtodos de instncia CardLayout public void next ( ContainerCardLayout parent ) ltimo primeiro public void previous ( ContainerCardLayout parent ) primeiro ltimo Pedindo o carto com o nome especificado na adio

Mtodo de instncia CardLayout


public void show (ContainerCardLayout parent , String name)
Nelson Freire (ISEPDEI-PPROG 2012/13) 292/332

Gestores Posicionamento

Gestores CardLayout
CardLayout cl = new CardLayout(); JPanel p2 = new JPanel( cl ); // pilha de cartes

3/6

Procedimento para usar 1. Criar um contentor de componentes gerido por um CardLayout

2.

Criar um contentor para cada carto


JPanel cartao1 = new JPanel(); cartao1.setBackground( Color.RED ); cartao1.add( new JLabel( new ImageIcon( "c:\\aguia.jpg" ) );

cartao1.add( new JLabel("Primeiro Carto") );

3.

Adicionar cada carto criado ao contentor CardLayout (pilha)


p2.add( cartao1, "Primeiro" );
p2.add( cartao2, "Segundo" );

// carto 1 designado Primeiro


// carto 2 designado Segundo

p2.add( cartao3, "Terceiro" );

// carto 3 designado Terceiro

4.

Trocar o carto visvel


b1.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) { cl.first( p2 ); } } ); // alternativa: cl.show(p2, "Primeiro");

Nelson Freire (ISEPDEI-PPROG 2012/13)

293/332

Gestores Posicionamento

Gestores CardLayout

4/6

Exemplo (completo)
public class CardLayoutGUIDemo extends JFrame { private CardLayout cl;

private JPanel p2;


public CardLayoutGUIDemo() { super("CardLayout"); cl = new CardLayout();

// 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

JPanel p1 = new JPanel( new GridLayout( 3, 1) );


p1.add(b1); p1.add(b2); p1.add(b3);

p1.setPreferredSize( new Dimension( 80, 40) );


c.add( p1, BorderLayout.WEST );

Nelson Freire (ISEPDEI-PPROG 2012/13)

294/332

Gestores Posicionamento JPanel cartao1 = new JPanel();

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

cartao2.add( new JLabel( "Segundo Carto") );


p2.add( cartao2, "Segundo" ); // carto 2 designado Segundo

JPanel cartao3 = new JPanel();


cartao3.setBackground(Color.GREEN);

JLabel lblLeao = new JLabel(new ImageIcon("c:\\leao.jpg"));


cartao3.add(lblLeao); cartao3.add(new JLabel("Terceiro Carto")); p2.add(cartao3, "Terceiro"); // carto 3 designado Terceiro

Nelson Freire (ISEPDEI-PPROG 2012/13)

295/332

Gestores Posicionamento c.add( p2, BorderLayout.CENTER );

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() {

public void actionPerformed(ActionEvent e) {


cl.first(p2); cl.next(p2); // alternativa: cl.show(p2, "Segundo");

}
}); b3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {


cl.last(p2); } // alternativa: cl.show(p2, "Terceiro");

});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(250, 160);
setResizable(false); setLocationRelativeTo(null); setVisible(true); } }

Nelson Freire (ISEPDEI-PPROG 2012/13)

296/332

Gestores Posicionamento

Combinao de Vrios Tipos de Gestores


North
Contentor BorderLayout

Contentor GridLayout

Center

Contentor GridLayout

Contentores CardLayout FlowLayout East

West Center

Contentor BorderLayout
Nelson Freire (ISEPDEI-PPROG 2012/13) 297/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

Nelson Freire (ISEPDEI-PPROG 2012/13)

298/332

Eventos Conceitos Bsicos Manipulao de Eventos

Sumrio

Nelson Freire (ISEPDEI-PPROG 2012/13)

299/332

Eventos Conceitos Bsicos

Sumrio

Conceitos Bsicos Noo de Evento Tipos de Evento

Classes de Evento
Noo Hierarquia Interfaces Trata Evento Noo Hierarquia Mtodos de Evento Tipos de Eventos Gerados por Componentes Principais

Nelson Freire (ISEPDEI-PPROG 2012/13)

300/332

Eventos Funcionamento de Aplicaes GUI orientado por eventos

Noo de Evento

Em geral, s executam aces aps a ocorrncia de acontecimentos, tais como

Aplicao GUI Tratamento de Eventos

Cliques no boto do rato


Movimentos do rato

Teclas premidas

Captura de Eventos Eventos

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 Mouse // tipo Action

// 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

Pertencem hierarquia de classes ilustrada


So subclasses de EventObject Topo da hierarquia (superclasse) Object EventObject AWTEvent TextEvent ActionEvent ContainerEvent AdjustmentEvent FocusEvent ComponentEvent PaintEvent ItemEvent WindowEvent
Packages: java.util ( EventObject ) Java.lang ( Object )

InputEvent

KeyEvent
package java.awt.event

MouseEvent MouseWheelEvent
303/332

Nelson Freire (ISEPDEI-PPROG 2012/13)

Eventos Cada Tipo de Evento Tem um interface associado Exemplos: Tipo Action Tipo Window

Interfaces Trata Evento


Interface ActionListener Interface WindowListener // tipo + Listener

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)

Nelson Freire (ISEPDEI-PPROG 2012/13)

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)

Nelson Freire (ISEPDEI-PPROG 2012/13)

306/332

Eventos
Componente JButton Action

Tipos de Eventos Gerados por Componentes GUI


Adjustment Component Container Focus Item Key Mouse Text Window

JCheckBox
JComboBox

JComponent
Container JDialog JFileDialog JFrame JLabel JList JMenu JMenuItem

JPopupMenu
JPanel

JScrollBar
JScrollPane

JTextArea
JTextComponent JTextField Window

Nelson Freire (ISEPDEI-PPROG 2012/13)

307/332

Eventos
Componente JButton JComboBox JList JMenuItem JTextField JCheckBox JCheckboxMenuItem

Principais Eventos Gerados por Componentes GUI


Evento Clique no boto Selecionado item Duplo clique Selecionado Item de menu Terminada edio de texto com ENTER Selecionado ou desselecionado Selecionado ou desselecionado Tipo de Evento Gerado

Action

Item Text Adjustment Component Focus Key

JList
JTextComponent JScrollBar

Selecionado ou desselecionado item


Texto alterado Scrollbar movido Componente movido, redimensionado, escondido ou mostrado Componente adquire ou perde foco Tecla pressionada ou libertada

JComponent

Rato com boto pressionado ou libertado


Window Utilizador quer fechar janela

Mouse
Window

Nelson Freire (ISEPDEI-PPROG 2012/13)

308/332

Eventos Manipulao

Sumrio

Manipulao de Eventos Modelo de Eventos AWT Trata Evento

Fonte de Evento
Objeto Evento

Tratamento de Eventos
Classes de Objetos Trata Evento Externas Internas Annimas Classes Adapter

Nelson Freire (ISEPDEI-PPROG 2012/13)

309/332

Eventos Captura de eventos Tratamento de eventos Programador precisa de conhecer Modelo de Eventos (AWT)

Manipulao de Eventos

Aplicaes GUI precisam de manipular eventos para

Aplicao GUI Tratamento de Eventos

Captura de Eventos Eventos


Sistema Operativo

Aplicao GUI orientada por Eventos

Nelson Freire (ISEPDEI-PPROG 2012/13)

310/332

Eventos Fonte de Evento

Modelo de Eventos (AWT)


/* Gera um tipo de evento e comunica-o, atravs de objetos Evento, a objetos Trata Evento registados nessa fonte e nesse tipo de evento */ // Num evento, existe apenas uma fonte

Tipos de Objetos Envolvidos num Evento

Evento

// Comunica o evento a um objeto Trata Evento

// Gerado pela Fonte de Evento (um para cada objeto Trata Evento)
Trata Evento // Trata o evento aps notificao recebida num objeto Evento

// Podem existir mltiplos


Evento Fonte de Evento Evento Trata Evento Trata Evento

Evento

Trata Evento

Modelo de Eventos (AWT)


Nelson Freire (ISEPDEI-PPROG 2012/13) 311/332

Eventos Responsabilidade

Objeto Trata Evento

1/3

Tratar um evento aps notificao recebida num objeto Evento

Evento

Trata Evento Trata Evento Interface Trata Evento


Implementa

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

Interface Trata Evento deve corresponder ao tipo de evento a tratar


Exemplos

Slide seguinte
Nelson Freire (ISEPDEI-PPROG 2012/13) 312/332

Eventos Exemplos de classes Trata Evento Para tratar eventos do tipo Action

Objeto Trata Evento

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):

Para tratar eventos do tipo Mouse

Permitem implementar apenas alguns dos mtodos especificados pela Interface


Mtodo de Evento

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)

mouseClicked(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed(MouseEvent e) mouseReleased(MouseEvent e) mouseMoved(MouseEvent e) mouseDragged(MouseEvent e)

Nelson Freire (ISEPDEI-PPROG 2012/13)

313/332

Eventos

Objeto Trata Evento

3/3

Exemplo: classe Trata Evento que implementa interface ActionListener

Mtodo de Evento

Classe Trata Evento

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Modelo de Eventos (AWT)

addEventListener( EventListener l )
Exemplos addActionListener( ActionListener l ) addKeyListener( KeyListener l )
Nelson Freire (ISEPDEI-PPROG 2012/13)

// Event varia: Action, Mouse, etc.

// regista objetos Trata Evento de eventos tipo Action // regista objetos Trata Evento de eventos tipo Key
315/332

addMouseListener( MouseListener l ) // regista objetos Trata Evento de eventos tipo Mouse

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 )

public synchronized void addMouseWheelListener(MouseWheelListener l)


Componente JButton
JDialog Action Adjustment Component Container Focus Item Key Mouse Text Windows

JFrame
JLabel

JList
JMenu

JMenuItem
JPanel JTextField Window

Nelson Freire (ISEPDEI-PPROG 2012/13)

316/332

Eventos

Fonte de Evento

3/3

Exemplo Registo de um objeto Trata Evento do tipo Action

Registo de um objeto Trata Evento do tipo Action gerado pelo boto btnSair

Nelson Freire (ISEPDEI-PPROG 2012/13)

317/332

Eventos Gerado Pela Fonte de Evento

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

Modelo de Eventos (AWT)


Nelson Freire (ISEPDEI-PPROG 2012/13) 318/332

Eventos instncia de Classe de Evento

Objeto Evento

2/5

Existe uma dessas classes para cada tipo de evento

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

Nelson Freire (ISEPDEI-PPROG 2012/13)

319/332

Eventos

Objeto Evento

3/5

Passado por Parmetro Aos mtodos de evento dos objetos Trata Evento

Exemplo

Mtodos (mais usados)

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)

Exemplo: retorna o ttulo do boto Sair


320/332

Eventos

Objeto Evento

4/5

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

1. Criar classe de objetos Trata Evento 2. Criar objeto Trata Evento

3. Registar objeto Trata Evento na Fonte de Evento

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Atravs da Herana de uma Classe Adapter


Usada em casos particulares // analisaremos mais adiante

Relativamente Localizao, uma Classe Trata Evento pode ser:


Classe Externa // permite ser usada por diferentes classes

Classe Interna
Identificada Annima Exemplos Prximos Slides
Nelson Freire (ISEPDEI-PPROG 2012/13)

// permite acesso a membros inacessveis de uma classe


// permite criar mltiplos Objetos de Evento // permite tratar mltiplas Fontes de Evento // permite tratar apenas um tipo de evento de uma Fonte

324/332

Eventos Possvel:

Classe Trata Evento Externa


se no precisar de membros inacessveis de outras classes

Interesse: ser reutilizada em mltiplas classes


public class TrataEventoAction implements ActionListener { // Classe Trata Evento Externa public void actionPerformed(ActionEvent e) { // cdigo de resposta a eventos do tipo Action; p.ex., gerado pelo boto } } public class DemoTrataEvento1 extends JFrame { public DemoTrataEvento1() { super("Demo"); JButton botao = new JButton("Calcular"); TrataEventoAction t = new TrataEventoAction(); // cria objeto t para tratar eventos tipo Action botao.addActionListener( t ); /* regista objeto t para tratar o evento Action do botao */ add(botao); setDefaultCloseOperation( EXIT_ON_CLOSE ); setSize( 200, 200 ); setVisible(true); } } public class ProgramaPrincipal { public static void main(String[] args) { DemoTrataEvento1 d = new DemoTratEvento1(); } } Nelson Freire (ISEPDEI-PPROG 2012/13) 325/332

Eventos Interesse Classe interna: Identificao:

Classe Trata Evento Interna (Identificada)


acesso a membros de classe inacessveis do exterior criar vrios objetos Trata Evento e tratar eventos de mltiplas Fontes de Evento

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

Classe Trata Evento Annima

Interesse: tratar apenas um tipo de evento de uma Fonte de Evento


public class DemoTrataEvento3 extends JFrame { public DemoTrataEvento3() { super("Demo"); JButton botao = new JButton("Calcular"); botao.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { // Classe Trata Evento Annima // Objeto Trata Evento instanciado e registado

// cdigo de resposta ao evento tipo Action gerado apenas pelo boto


}

});
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

Eventos Usadas para definir Classes Trata Evento

Classes Adapter

2/2

Tm de ser herdadas da classe Adapter Tm de redefinir apenas mtodos de evento necessrios

Exemplos // Classe Trata Evento Externa ou Interna


public class TrataEventoTerminator extends WindowAdapter {

public void windowClosing (WindowEvent e) {


System.exit(0); } } // Classe Trata Evento Annima JFrame janela = new JFrame(); janela.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); });
Nelson Freire (ISEPDEI-PPROG 2012/13)

// implementado apenas o mtodo pretendido

// Classe annima

329/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

Nelson Freire (ISEPDEI-PPROG 2012/13)

330/332

Bibliografia Geral
Livro Core Java, Volume I Fundamentals Cay S. Horstmann and Gary Cornell

Eighth Edition, 2007


Prentice Hall

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

API (Application Programming Interface)


http://docs.oracle.com/javase/7/docs/api/index.html

Nelson Freire (ISEPDEI-PPROG 2012/13)

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

Caixas de Dilogo JFileChooser JOptionPane JDialog


Eventos Action Gestores de Posicionamento FlowLayout BorderLayout GridLayout CardLayout
332/332

Nelson Freire (ISEPDEI-PPROG 2012/13)

You might also like