Escolar Documentos
Profissional Documentos
Cultura Documentos
Última Atualização
Junho / 2004
Versão: 3.0
1
Objetivos
Apresentar
Os fundamentos da construção GUI em Java
Modelo de Eventos AWT
Biblioteca de Componentes Swing
2
Introdução
4
Recipientes e Componentes
5
AWT versus Swing
6
AWT versus Swing
7
Evolução das AWT
Java 1.0
Modelo de eventos arcaico baseado em
interfaces
Java 1.1
Melhora do modelo de eventos: por delegação
usando “design pattern” Observer
Java 1.2
Swing substitui totalmente componentes AWT
Mantém e estende a interface de eventos e
layout da versão 1.1
8
Tipos de Aplicativos Graficos
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
10
Class java.awt.Component
12
Class java.awt.Component
13
java.awt.Container
Subclasse de java.awt.Component
São “recipientes”. Podem conter outros
componentes
Descendentes da classe Container:
Frame, Panel, Applet e
JComponent (raiz da hierarquia dos componentes
Swing)
Para adicionar um componente em um
Container (Panel, Frame, Applet) utiliza-se o
método add(Componet c)
14
javax.swing.JComponent
Definição de bordas
15
Principais Componentes
JComponent
AbstractButton Botões
17
Hierarquia de Herança da Classe
JFrame
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent java.awt.Window
javax.swing.JFrame
18
Frames (JFrame)
import javax.swing.JFrame;
19
Adicionando componentes ao JFrame
21
Painel - Exemplo
Desvantagens
Restrições de segurança
Tempo de download
Incompatibilidade com browsers
Vantagens
Facilidade para realizar comunicação em rede
Possibilidade de abrir janelas externas
Capacidade de estender o browser em recursos
de segurança, protocolos de rede, capacidade
gráfica
23
Vantagens/Desvantagens dos
Applets
24
Manipulação de Eventos
25
Tratamento de Eventos
27
Tratamento de Eventos
28
Tratamento de Eventos
29
Modelo de Tratamento de Eventos
30
Modelo de Tratamento de Eventos
31
Modelo de Tratamento de Eventos
32
Modelo de Tratamento de Eventos
3. Listener (Ouvinte)
Recebem eventos como argumento
33
Modelo de Tratamento de Eventos
34
Como ligar a fonte ao Ouvinte
Fonte Ouvinte
35
1. import java.awt.*;
2. import java.awt.event.*;
3. import javax.swing.*;
6. public ButtonTest() {
7. super( "Testing Buttons" );
8. Container c = getContentPane();
9. c.setLayout( new FlowLayout() );
Descendentes de java.awt.event.AWTEvent
Divididos em categorias (java.awt.event)
ActionEvent (fonte: componentes de ação (JButton,
JTextField, ...))
MouseEvent (fonte: componentes afetados pelo mouse)
ItemEvent (fonte: componentes de seleção (JCheckBox,
JRadioButton, JComboBox, ...))
AdjustmentEvent (fonte: scrollbars)
TextEvent (fonte: componentes de texto)
WindowEvent (fonte: janelas)
FocusEvent (fonte: componentes em geral)
KeyEvent (fonte: componentes afetados pelo teclado)
38
Alguns componentes que são
subclasse de JComponent
39
JLabel
40
1. import java.awt.*;
2. import javax.swing.*;
3. import java.awt.event.*;
TextFieldTest.java 44
// Demonstrando as classes JTextField e JPasswordField
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public TextFieldTest() {
super( "Testing JTextField and JPasswordField" );
Container c = getContentPane();
c.setLayout( new FlowLayout() );
text1 = new JTextField( 10 );
c.add( text1 );
text2 = new JTextField( "Enter text here" );
c.add( text2 );
text3 = new JTextField( “Text Field desabilitado", 20 );
text3.setEditable( false ); // desabilita o JTextField
c.add( text3 );
password = new JPasswordField( “secreto" );
c.add( password );
//Instancia um objeto da classe interna TextFieldHandler
//que implenta a interface ActionListener
TextFieldHandler ouvinte = new TextFieldHandler();
text1.addActionListener( ouvinte );
text2.addActionListener( ouvinte );
text3.addActionListener( ouvinte );
password.addActionListener( ouvinte );
setSize( 325, 100 );
show();
} // fim do construtor
// classe interna para tratamento de eventos
private class TextFieldHandler implements ActionListener
{
public void actionPerformed( ActionEvent e ) {
String s = "";
if ( e.getSource() == text1 )
s = "texto1: " + e.getActionCommand();
else if ( e.getSource() == text2 )
s = "texto2: " + e.getActionCommand();
else if ( e.getSource() == text3 )
s = "texto3: " + e.getActionCommand();
else if ( e.getSource() == password ) {
JPasswordField pwd =
(JPasswordField) e.getSource();
s = "senha: " +
new String( pwd.getPassword() );
}
JOptionPane.showMessageDialog( null, s );
}
} // fim da classe interna
} //fim da classe TextFieldTest
Botões
Radio buttons
48
JButton
javax.swing.JComponent
(Classe Abstrata)
javax.swing.AbstractButton
javax.swing.JButton javax.swing.ToggleButton
javax.swing.JCheckBox javax.swing.JRadioButton
49
JButton
50
JCheckBox (Caixa de Seleção)
Confira os exemplo:
CheckBoxTest.java
51
JRadioButton e ButtonGroup
52
JRadioButton (Botões de Opção)
53
JToolTip
54
JOptionPane
55
JTextArea
57
JList
58
Tratamento de Eventos do Mouse
59
Tratamento de Eventos do Mouse
(MouseEvent)
60
Tratamento de Eventos do Mouse
(MouseEvent)
61
Classes Adaptadoras
62
Classes Adaptadoras
64
Bibliografia Consultada
65