48
Orientação a Objetos com Java Julio Cesar Nardi [email protected] 2011/2

Orientação a Objetos com Javajulionardi.scalfoni.com.br/arquivos/PROIII_Apresentacao7.pdf · componentes de interface gráfica Java, dependentes de plataforma. ... Swing, novo conjunto

Embed Size (px)

Citation preview

Orientação a Objetos com Java

Julio Cesar [email protected]

2011/2

Aula:GUI - Swing

Objetivos: Introdução ao Swing

Principais componentes Swing

Principais propriedades e eventos

Criando interfaces com Swing

OO e Java

Agenda

Interfaces com o Usuário em Java Categorias

Swing Fundamentos Componentes

Diálogos, Janelas, Painéis, Botões, Textos e Labels; Seleção, Menus, Listas, Tabelas, Árvores, outros.

Eventos 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

Como peças encaixando-se umas sobre as outras Estendidos

Utilizando herança Dimensionados

Alterando seus tamanhos e formas Posicionados

Definindo onde devem aparecer Caracterizados

Modificando sua aparência e comportamento Atribuídos de Eventos

Determinando seus comportamentos

OO e Java

Componentes Swing

Botões JButton

Seleção JCheckBox JRadioButton JComboBox JList

Edição JTextField JTextArea JPasswordField

Janelas JFrame JInternalFrame JOptionPane JMenu, JMenuItem

Outros JLabel JTree JTable JPanel

OO e Java

Componentes Swing

JPanel Painel de propósito geral,

onde outros componentes podem ser montados

JButton Botão que são clicados e

disparam ações

JLabel Rótulos para exibição de

informações

JTextField(JPasswordField, JTextArea) Campo de entrada de texto

OO e Java

Componentes Swing

JCheckBox Botões de seleção múltipla

JRadioButton Botões para seleção única

JComboBox Caixa de seleção

JMenu, JMenuItem Menus de seleção

OO e Java

Componentes Swing

JOptionPane Caixa de diálogo para uso

rápido

JFrame Janelas para comportar

demais componentes

JInternalFrame Janelas internas às JFrames

OO e Java

Componentes Swing

JList Lista de seleção

JTable Tabela de dados

JTree Á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

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

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 umcomponente porregiã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: SpringLayout GroupLayout ScrollPaneLayout ViewportLayout

por IDEs 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)

javax.swing.JComponent

Listener: Objeto Ouvinte (ouvinte de mouse) 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: btOk.addActiontListener(actionListener);

Sempre que um listener é adicionado, um evento é associado a ele e uma ação é determinada: 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)

ActionListener MouseEvent (componentes afetados pelo mouse)

MouseListener e MouseMotionListener ItemEvent (checkboxes e similares)

ItemListener WindowEvent (janelas)

WindowListener KeyEvent (componentes afetados pelo teclado)

KeyListener ***Event

***Listener

OO e Java

Components x Listeners

OO e Java

Referências

Referências úteis para Swing: Criando Interfaces Gráficas Swing:

http://java.sun.com/docs/books/tutorial/uiswing/index.html

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

Aula:GUI - Swing

Objetivos: Introdução ao Swing no Netbeans

Principais componentes Swing

Principais propriedades e eventos

Criando interfaces com Swing