Componentes Swing - Julio Cesar Nardi

Propaganda
Orientação a Objetos
com Java
Julio Cesar Nardi
[email protected]
2011/2
Aula:
GUI - Swing

Objetivos:
 Introdução ao Swing

Principais componentes Swing

Principais propriedades e eventos

Criando interfaces com Swing
Agenda

Interfaces com o Usuário em Java


Categorias
Swing

Fundamentos

Componentes



Eventos


Diálogos, Janelas, Painéis, Botões, Textos e Labels;
Seleção, Menus, Listas, Tabelas, Árvores, outros.
Ação, Teclado, Mouse
Posicionamento

Layout Managers
OO e Java
Interfaces com o Usuário

Java dispões de diversas categorias de interfaces
com o usuário:







Texto, via console, usando entrada e saída padrão.
AWT (Abstract Window Toolkit), antigo conjunto de
componentes de interface gráfica Java, dependentes de
plataforma.
Applets, rodam no browser, usando Swing, AWT, 2D
(demo\applets).
J2D, Java 2 Dimension (javahome\demo\jfc\Java2D).
J3D, Java 3 Dimension.
Swing, novo conjunto de componentes, independentes
de plataforma.
JSP, baseada em html para interface Web.
OO e Java
GUI - Swing

AWT (Abstract Window Toolkit)




Fornece infra-estrutura mínima de GUI;
Componentes com aparência dependente da plataforma
(fidelidade ao toolkit nativo);
Bugs e incompatibilidades entre plataformas (no
WORA).
Swing



(javahome\demo\jfc\SwingSet2)
Uma das bibliotecas gráficas mais completas
existentes;
Componentes independentes da implementação nativa
(escrita em Java puro);
Aparência consistente entre plataformas.
OO e Java
GUI com Frameworks

A criação de interfaces gráficas em Java pode
ser um processo trabalhoso;

Quando se utiliza ferramentas para a criação
das GUI pode-se obter ganhos de
produtividade;

Algumas ferramentas, entretanto, utilizam
bibliotecas proprietárias, o que pode gerar
alguma dependência;

Deve-se, portanto, analisar as necessidades, os
ganhos e as restrições durante o
desenvolvimento do projeto GUI.
OO e Java
Principais Componentes Swing
OO e Java
Hierarquia de Componentes
OO e Java
Hierarquia de Componentes
OO e Java
Componentes Swing

Swing foi desenvolvida de forma que seus objetos
(componentes) possam ser:

Montados


Estendidos


Definindo onde devem aparecer
Caracterizados


Alterando seus tamanhos e formas
Posicionados


Utilizando herança
Dimensionados


Como peças encaixando-se umas sobre as outras
Modificando sua aparência e comportamento
Atribuídos de Eventos

Determinando seus comportamentos
OO e Java
Componentes Swing

Botões


JButton



JCheckBox
JRadioButton
JComboBox
JList
Edição



JTextField
JTextArea
JPasswordField
Janelas

Seleção







JFrame
JInternalFrame
JOptionPane
JMenu, JMenuItem
Outros




JLabel
JTree
JTable
JPanel
OO e Java
Componentes Swing

JPanel


JButton


Botão que são clicados e
disparam ações
JLabel


Painel de propósito geral,
onde outros componentes
podem ser montados
Rótulos para exibição de
informações
JTextField
(JPasswordField, JTextArea)

Campo de entrada de texto
OO e Java
Componentes Swing

JCheckBox


JRadioButton


Botões para seleção única
JComboBox


Botões de seleção múltipla
Caixa de seleção
JMenu, JMenuItem

Menus de seleção
OO e Java
Componentes Swing

JOptionPane


JFrame


Caixa de diálogo para uso
rápido
Janelas para comportar
demais componentes
JInternalFrame

Janelas internas às JFrames
OO e Java
Componentes Swing

JList


JTable


Tabela de dados
JTree


Lista de seleção
Árvore com elementos (nós)
JFileChooser

Seleção de arquivos
OO e Java
JOptionPane


Métodos básicos:
–
showConfirmDialog,
–
showInputDialog,
–
showMessageDialog
Tipos de Mensagem:
–
ERROR_MESSAGE,
–
INFORMATION_MESSAGE,
–
WARNING_MESSAGE,
–
QUESTION_MESSAGE,
–
PLAIN_MESSAGE
OO e Java
JFrame

Métodos básicos:
–
Construtor
–
setSize
–
setVisible
–
setIconImage
–
add
–
setLayout
–
setDefaultCloseOperation
OO e Java
JLabel

Principais métodos

void setText(String)

String getText()
OO e Java
JTextField

Principais métodos

void setText(String)

String getText()

void setEditable(boolean)

boolean isEditable()
OO e Java
JButton

Principais métodos

void setText(String)

String getText()
OO e Java
JTextArea


Principais métodos

void setText(String)

String getText()

void setEditable(boolean)

boolean isEditable()

void append(String)
JScrollPane
OO e Java
JComboBox

Principais métodos

void addItem(Object)

void insertItemAt(Object, int)

Object getItemAt(int)

Object getSelectedItem()

void removeAllItems()

void removeItemAt(int)

void removeItem(Object)
OO e Java
JRadioButton / ButtonGroup

Principais métodos

void setSelected(boolean)

boolean isSelected()

void doClick()

void doClick(int)

void add(AbstractButton)

void remove(AbstractButton)

public ButtonGroup clearSelection()
OO e Java
JCheckBox

Principais métodos

void setSelected(boolean)

boolean isSelected()
OO e Java
JList


Principais métodos

Object getSelectedValue()

Object[] getSelectedValues()

void setSelectedIndex(int)

void setSelectedIndices(int[])
Utilização de Modelos
– DefaultListModel: uma implementação básica dos
métodos já está disponível para você.
– AbstractListModel: você herda alguns métodos e
implementa outros.
– ListModel: você gerencia tudo.

Modos de seleção
OO e Java
JMenuBar / JMenu / JMenuItem

Principais métodos

void setEnabled(boolean)

void remove(JMenuItem)

void remove(int)

JMenu add(JMenu)
OO e Java
JTable

Principais métodos

getSelectedRow();

getSelectedColumn();

getRowCount();

Para Models:


setValueAt(Object value, int rowIndex, int colIndex)
getValueAt(int rowIndex, int colIndex)
OO e Java
JInternalFrame

Semelhante ao JFrame, mas possui
particularidades importantes;

“Está entre” o JFrame e o JOptionPane;

Deve ser inserido em um JDesktopPane;
OO e Java
Gerenciadores de Layout
- Layout Managers -
OO e Java
Gerenciadores de Layout

Os Layout Managers são utilizados para organizar
componentes GUI em um container.

Permitem que o programador se concentre "na
aparência e no comportamento" das interfaces

Dão menos trabalho que determinar a posição e o
tamanho exatos de cada componente na interface.

Os componentes não precisam ter um tamanho fixo
e podem ser redimensionar juntamente com as
janelas.

Object  Component  Container  JComponent
OO e Java
Layout Managers
 Null

Layout
Tamanho e Posição exatos dos componentes são
necessários

component.setBounds(posX, posY, larg, alt)

Valores exatos são difíceis de prever.

Janela inflexível

Permite obter qualquer configuração de GUI

É bom para desenvolvedor pouco experiente
OO e Java
Layout Managers
 Flow
Layout

Padrão do JPanel

Componentes são adicionados em um fluxo
horizontal

Alinhamento pode ser ao centro, esquerda ou
direita.
OO e Java
Layout Managers
 Border
Layout

Padrão das janelas (JFrame, JInternalFrame)

Componentes organizados em 5 regiões:
PAGE_START, PAGE_END, LINE_START, LINE_END e
CENTER

Com redimensionamento, região CENTER
ocupa espaço extra.

Somente um
componente por
região.
OO e Java
Layout Managers
 Grid
Layout

Divide o container em uma grade,
organizando os componentes em células ao
longo de linhas e colunas

Apenas um componente por célula, todos
com o mesmo tamanho

Adição de componentes
é feita na ordem linha,
coluna.
OO e Java
Layout Managers

Box Layout

Componentes organizados de forma horizontal
(esquerda  direita) ou vertical (cima  baixo)

Construtor com o container que está controlando e
a orientação do layout (X_AXIS ou Y_AXIS)
OO e Java
Layout Managers
 Grid
Bag Layout

LM mais poderoso, e complexo

Funciona como o GridLayout, porém, os
componentes podem ocupar mais de uma célula e
podem ser adicionados em qualquer ordem

Utiliza um objeto GridBagConstraints para
configurar algumas variáveis:


gridx e gridy: linha e coluna do componente
gridwidth e gridheight: células a ocupar
OO e Java
Layout Managers

Outros:

Existem ainda outros gerenciadores de layout
oferecidos pelo Java:





por IDEs




SpringLayout
GroupLayout
ScrollPaneLayout
ViewportLayout
AbsoluteLayout
XYLayout
VerticalFlowLayout
e, além desses o desenvolvedor pode se habilitar
a criar os seus próprios layouts .
OO e Java
Tratamento de Eventos
OO e Java
Tratamento de Eventos

Introdução

As interfaces gráficas funcionam com um loop que
fica o tempo todo atualizando a tela.






Como saber se um botão foi clicado?
Como saber qual botão foi clicado?
Como saber se o mouse passou por algum componente?
Como saber se algum caractere foi digitado?
Ficar o tempo todo verificando cada botão, a posição do
mouse, as teclas?
Vale a pena criar um loop gigante com um switch
enorme para fazer todas essas verificações?
OO e Java
Tratamento de Eventos

Java permite, através da biblioteca AWT, que os
eventos sejam tratados com mais facilidade.

Há três conceitos principais:

Component: Componente Gráfico (botão)


Listener: Objeto Ouvinte (ouvinte de mouse)


javax.swing.JComponent
java.util.EventListener
Event: Evento a ser tratado (clique do mouse)

java.util.EventObject
OO e Java
Tratamento de Eventos

Funcionamento básico:

Quando se deseja ‘monitorar’ um componente, é
adicionado um listener (ouvite) a ele:


Sempre que um listener é adicionado, um evento é
associado a ele e uma ação é determinada:


btOk.addActiontListener(actionListener);
public void actionPerformed(ActionEvent ae) {
System.out.println("Botão Ok Clicado!");
}
Dessa forma, o listener fica ‘escutando’ os eventos
dos S.O. para saber sobre o mouse e o teclado e
dispara os eventos quando necessário.
OO e Java
Tratamento de Eventos

Exemplo:

JButton btSalvar = new JButton("Salvar");
btSalvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.out.println("Botão Salvar Clicado");
}
});

Foi adicionado o ouvinte ActionListener ao botão, com o
evento ActionEvent associado e a ação de imprimir uma
mensagem.
OO e Java
Tratamento de Eventos

Alguns tipos de eventos e listeners:

ActionEvent (componentes de ação)


MouseEvent (componentes afetados pelo mouse)


WindowListener
KeyEvent (componentes afetados pelo teclado)


ItemListener
WindowEvent (janelas)


MouseListener e MouseMotionListener
ItemEvent (checkboxes e similares)


ActionListener
KeyListener
***Event

***Listener
OO e Java
Components x Listeners
OO e Java
Referências

Referências úteis para Swing:

Criando Interfaces Gráficas Swing:


A Visual Guide to Swing Components (Java Look and
Feel):


http://java.sun.com/docs/books/tutorial/ui/features/components.html
Java Web Start Demos: The SwingSet Demo:


http://java.sun.com/docs/books/tutorial/uiswing/index.html
http://java.sun.com/products/javawebstart/demos.html
Aplicações Desenvolvidas com Swing:

http://java.sun.com/products/jfc/tsc/sightings/index.html
OO e Java
Referências

Eventos

Tutorial da Sun:


http://java.sun.com/docs/books/tutorial/uiswing/events/index.html
Layout Managers

Tutorial da Sun:

http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html
OO e Java
Swing: Ferramentas

Ferramentas para desenvolvimento de
interfaces Swing:

NetBeans (Matisse)

Eclipse (Visual Editor, Matisse4Eclipse)

Swing Designer

JFormDesigner

FormLayoutMaker

Abeille

JGoodies
OO e Java
Aula:
GUI - Swing

Objetivos:
 Introdução ao Swing no Netbeans

Principais componentes Swing

Principais propriedades e eventos

Criando interfaces com Swing
Download