Universidade Presbiteriana Mackenzie	
  
Aula	
  3:	
  Hierarquia	
  Window	
  
Prof. Ms. Daniel Arndt Alves
Faculdade	
  de	
  Computação	
  e	
  Informá=ca	
  
Computação e Informática
Faculdade de
Linguagem	
  de	
  
Programação	
  II	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   1	
  
Tópicos	
  da	
  Aula	
  
•  Hierarquia	
  Window	
  dentro	
  do	
  
pacote	
  javax.swing
•  Layouts	
  do	
  Swing	
  
•  Bordas	
  
•  Tratamento	
  de	
  eventos	
  
•  Manipulação	
  de	
  look-­‐and-­‐feel	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   2	
  
Hierarquia	
  Window	
  	
  
Além da classe JPanel, já vista nas aulas
anteriores, o pacote Swing fornece uma série
de alternativas para containers.
Uma destas alternativas inicia-se com a
hierarquia da classe Window, definida no
pacote java.awt.	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   3	
  
Hierarquia	
  Window(II)	
  	
  
Window	
  
	
  (	
  AWT	
  )	
  
Dialog	
  
	
  (AWT)	
  
Frame	
  
(AWT)	
  
JWindow	
  
JDialog	
  
JFrame	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   4	
  
Classe	
  JFrame	
  	
  
A classe JFrame é muito similar à classe Frame
do AWT. Porém, alguns pontos são exclusivos
à classe JFrame:
•  os componentes não são inseridos diretamente
com add
•  a alteração não é feita diretamente só com
setLayout
•  pode-se definir comportamentos-padrão para
evento de fechamento da janela
	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   5	
  
JFrame (Exemplo)	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   6	
  
Código	
  do	
  Exemplo	
  	
  
public class FrameTester {
public static void main (String args[]) {
JFrame f = new JFrame ("JFrame Example");
Container c = f.getContentPane();
c.setLayout (new FlowLayout());
for (int i = 0; i < 5; i++) {
c.add (new JButton ("No"));
c.add (new Button ("Batter"));
}
c.add (new JLabel ("Swing"));
f.setSize (300, 200);
f.show();
}
}	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   7	
  
Evento	
  de	
  fechamento	
  de	
  janela	
  	
  
Além do tradicional tratamento de evento de
fechamento de janela do AWT, o pacote Swing
disponibiliza outras possibilidades de
tratamento através do método
setDefaultCloseOperation(int operação)
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   8	
  
Evento	
  de	
  fechamento	
  de	
  janela	
  	
  
O parâmetro operação pode ser uma das seguintes constantes:
•  DO_NOTHING_ON_CLOSE: comportamento do frame
do AWT
•  HIDE_ON_CLOSE: comportamento padrão. A janela é
apenas escondida.
•  DISPOSE_ON_CLOSE: libera todo o conteúdo da janela.
•  EXIT_ON_CLOSE: força chamada de System.exit()
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   9	
  
Layout	
  em	
  Swing	
  	
  
Além dos tradicionais gerenciadores de layout do
AWT, o pacote javax.swing disponibiliza
4 gerenciadores adicionais:
•  ScrollPaneLayout
•  ViewportLayout
•  BoxLayout
•  OverlayLayout
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   10	
  
ScrollPaneLayout	
  	
  
É o gerenciador de layout utilizado pelo
JScrollPane. Não há necessidade de se
instanciar uma classe com este gerenciador
nem associá-la a um JScrollPane, pois isto
já é feito automaticamente.
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   11	
  
ViewportLayout	
  	
  
É o gerenciador de layout usado pelo
componente JViewport.
Assim como no ScrollPaneLayout, o
gerenciador ViewportLayout já está
automaticamente associado com um objeto
JViewPort.
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   12	
  
BoxLayout	
  	
  
É um gerenciador que permite arranjar os
componentes ao longo dos eixos x ou y.
O construtor do BoxLayout tem a seguinte
forma:
BoxLayout(container, eixo)
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   13	
  
Código	
  do	
  Exemplo	
  	
  
class BoxLayoutTest extends JPanel {
BoxLayoutTest() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
TextField textField = new TextField();
TextArea textArea = new TextArea(4, 20);
JButton button = new JButton("Tiger", new ImageIcon("SmallTiger.gif"));
add(new JLabel("TextField:"));
add(textField);
add(new JLabel("TextArea:"));
add(textArea);
add(new JLabel("Button:"));
add(button);
}
}	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   14	
  
BoxLayout	
  (Exemplo)	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   15	
  
Bordas	
  	
  
O pacote javax.swing.border consiste de
várias classes para desenhar bordas
envolvendo componentes.
Todas estas classes implementam a interface
Border.
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   16	
  
Interface	
  Border
A interface Border consiste de três métodos:
•  public Insets getBorderInsets(Component c):
define a área útil para desenhar a borda
•  public boolean isBorderOpaque(): define se a
borda é opaca ou transparente
•  public void paintBorder(Component c, Graphics
g, int x, int y, int width, int height): define como
desenhar a borda.
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   17	
  
Implementações	
  pré-­‐definidas	
  de	
  bordas	
  
O p a c o t e j a v a x . s w i n g . b o r d e r
disponibiliza 9 classes que implementam a
interface Border:
	
  AbstractBorder BevelBorder
CompoundBorder EmptyBorder
EtchedBorder LineBorder
MatteBorder SoftBevelBorder
TitleBorder
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   18	
  
Definição	
  de	
  bordas	
  
Caso as bordas anteriores não sejam suficientes
para atender às necessidades, basta
implementar os métodos da interface Border,
mostrados anteriormente.	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   19	
  
Instanciação	
  de	
  bordas	
  
Bordas podem ser criadas invocando-se o
construtor de uma das classes anteriores
(exceto AbstractBorder) ou chamando os
métodos estáticos da classe BorderFactory
(pacote javax.swing).
Para se atribuir uma borda a um componente/
c o n t a i n e r , u t i l i z a - s e o m é t o d o
setBorder(borda).	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   20	
  
Bordas	
  (Exemplo)	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   21	
  
Bordas	
  (Exemplo)	
  
public class BorderPanel extends JPanel {
class MyBorder implements Border {
Color color;
public MyBorder (Color c) {
color = c;
}
public void paintBorder (Component c, Graphics g, int x, int y,
int width, int height) {
Insets insets = getBorderInsets(c);
g.setColor (color);
g.fillRect (x, y, 2, height);
g.fillRect (x, y, width, 2);
g.setColor (color.darker());
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   22	
  
Bordas	
  (Exemplo)	
  
g.fillRect (x+width-insets.right, y, 2, height);
g.fillRect (x, y+height-insets.bottom, width, 2);
}
public boolean isBorderOpaque() {
return false;
}
public Insets getBorderInsets(Component c) {
return new Insets (2, 2, 2, 2);
}
}	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   23	
  
Bordas	
  (Exemplo)	
  
public BorderPanel() {
setLayout (new GridLayout (4, 3, 5, 5));
JButton b = new JButton("Empty");
b.setBorder (new EmptyBorder (1,1,1,1));
add(b);
b = new JButton ("Etched");
b.setBorder (new EtchedBorder ());
add(b);
b = new JButton ("ColorizedEtched");
b.setBorder (new EtchedBorder (Color.red, Color.green));
add(b);	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   24	
  
Bordas	
  (Exemplo)	
  
b = new JButton ("Titled/Line");
b.setBorder(new TitledBorder (
new TitledBorder(
LineBorder.createGrayLineBorder(),"Hello"),
"World",
TitledBorder.RIGHT,
TitledBorder.BOTTOM));
add(b);
b = new JButton ("Bevel Up");
b.setBorder(new BevelBorder(BevelBorder.RAISED));
add(b);	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   25	
  
Bordas	
  (Exemplo)	
  
b = new JButton ("Bevel Down");
b.setBorder(new BevelBorder(BevelBorder.LOWERED));
add(b);
b = new JButton ("Soft Bevel Up");
b.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
add(b);
b = new JButton ("Soft Bevel Down");
b.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
add(b);
b = new JButton ("Matte");
b.setBorder(new MatteBorder(5, 10, 5, 10, Color.red));
add(b);	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   26	
  
Bordas	
  (Exemplo)	
  
b = new JButton ("Matte Icon");
Icon icon = new ImageIcon ("SmallTiger.gif");
b.setBorder(new MatteBorder(10, 10, 10, 10, icon));
add(b);
b = new JButton ("ColorizedBezel");
b.setBorder(new BevelBorder(BevelBorder.RAISED,
Color.red, Color.pink));
add(b);
b = new JButton ("My/Compound");
b.setBorder(new CompoundBorder(new MyBorder(Color.red),
new CompoundBorder (new MyBorder(Color.green),
new MyBorder(Color.blue))));
add(b);
}
}	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   27	
  
Eventos	
  	
  
Como grande parte dos elementos de interface do
swing é derivada da classe básica
J C o m p o n e n t ( d e r i v a d a d e
java.awt.Container), os métodos de
gerenciamento de evento definidos no AWT
podem ser aplicados neste contexto, embora a
maioria das construções utilize classes e
interfaces (listeners) definidos dentro do
pacote javax.swing
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   28	
  
Eventos	
  	
  
Para tratar convenientemente os eventos dentro
do swing, existe a necessidade de se conhecer:
•  tipos de objetos instanciados nos eventos
•  interfaces do tipo listener para implementação
•  fontes de eventos e interfaces utilizadas por
estas fontes
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   29	
  
Objetos	
  de	
  evento	
  	
  
AncestorEvent CaretEvent
ChangeEvent DocumentEvent
HyperlinkEvent InternalFrameEvent
ListDataEvent ListSelectionEvent
MenuDragMouseEvent MenuEvent
MenuKeyEvent PopupMenuEvent
TableColumnModelEvent TableModelEvent
TreeExpansionEvent TreeModelEvent
TreeSelectionEvent UndoableEditEvent
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   30	
  
Exemplo	
  de	
  objetos	
  de	
  evento	
  	
  
JMenu file = new JMenu ("File");
file.addMenuListener (new MenuListener() {
public void menuSelected (MenuEvent e) {
System.out.println ("Selected");
}
public void menuDeselected (MenuEvent e) {
System.out.println ("Deselected");
}
public void menuCanceled (MenuEvent e) {
System.out.println ("Canceled");
}
});	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   31	
  
Interfaces	
  do	
  apo	
  listener	
  	
  
O pacote swing disponibiliza várias interfaces
para tratamento de eventos.
Estas interfaces estão localizadas no pacote
javax.swing.event.
Grande parte das implementações em Swing
utilizam os métodos destas interfaces para
tratamento dos eventos.
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   32	
  
Métodos	
  das	
  interfaces	
  listener	
  
AncestorListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ancestorAdded	
  (AncestorEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ancestorMoved	
  (AncestorEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ancestorRemoved	
  (AncestorEvent)	
  
CaretListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  caretUpdate	
  (CaretEvent)	
  
CellEditorListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ediangCanceled	
  (ChangeEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ediangStopped	
  (ChangeEvent)	
  
ChangeListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  stateChanged	
  (ChangeEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   33	
  
Métodos	
  das	
  interfaces	
  listener	
  
DocumentListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  changedUpdate	
  (DocumentEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  insertUpdate	
  (DocumentEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  removeUpdate	
  (DocumentEvent)	
  
HyperlinkListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  hyperlinkUpdate	
  (HyperlinkEvent)	
  
InternalFrameListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
   	
   	
  internalFrameAcavated	
  (InternalFrameEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
   	
   	
  internalFrameClosed	
  	
  	
  	
  (InternalFrameEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
   	
   	
  internalFrameClosing	
  (InternalFrameEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
   	
   	
  internalFrameDeacavated	
  (InternalFrameEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
   	
   	
  internalFrameDeiconified	
  (InternalFrameEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
   	
   	
  internalFrameIconified	
  (InternalFrameEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
   	
   	
  internalFrameOpened	
  (InternalFrameEvent)	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   34	
  
Métodos	
  das	
  interfaces	
  listener	
  
ListDataListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  contentsChanged	
  (ListDataEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  intervalAdded	
  (ListDataEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  intervalRemoved	
  (ListDataEvent)	
  
ListSelec=onListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  valueChanged	
  (ListSelecaonEvent)	
  
MenuDragMouseListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuDragMouseDragged	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (MenuDragMouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuDragMouseEntered	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (MenuDragMouseEvent)	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   35	
  
Métodos	
  das	
  interfaces	
  listener	
  
MenuKeyListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuKeyPressed	
  (MenuKeyEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuKeyReleased(MenuKeyEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuKeyTyped	
  (MenuKeyEvent)	
  
MenuListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuCanceled	
  (MenuEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuDeselected	
  (MenuEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuSelected	
  (MenuEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   36	
  
Métodos	
  das	
  interfaces	
  listener	
  
MouseInputListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mouseClicked	
  (MouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mouseDragged	
  (MouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mouseEntered	
  (MouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mouseExited	
  (MouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mouseMoved	
  (MouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mousePressed	
  (MouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mouseReleased	
  (MouseEvent)	
  
PopupMenuListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  popupmenuCanceled	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (PopupMenuEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuDragMouseExited	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (MenuDragMouseEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  menuDragMouseReleased	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (MenuDragMouseEvent)	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   37	
  
Métodos	
  das	
  interfaces	
  listener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  popupMenuWillBecomeInvisible	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (PopupMenuEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  popupMenuWillBecomeVisible	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (PopupMenuEvent)	
  
TableColumnModelListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  columnAdded	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (TableColumnModelEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  columnMarginChanged	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (ChangeEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  columnMoved	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (TableColumnModelEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   38	
  
Métodos	
  das	
  interfaces	
  listener	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  columnRemoved	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (TableColumnModelEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  columnSelecaonChanged	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (ListSelecaonEvent)	
  
TableModelListener	
  
	
  tableChanged	
  (TableModelEvent)	
  
	
  
TreeExpansionListener	
  
	
  treeCollapsed	
  (TreeExpansionEvent)	
  
	
  	
  	
  	
  	
  treeExpanded	
  (TreeExpansionEvent)	
  
	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   39	
  
Métodos	
  das	
  interfaces	
  listener	
  
	
  	
  TreeModelListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  treeNodesChanged	
  (TreeModelEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  treeNodesInserted	
  (TreeModelEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  treeNodesRemoved	
  (TreeModelEvent)	
  
	
  	
  	
  	
  	
  	
  	
  	
  treeStructureChanged(TreeModelEvent)	
  
	
  
	
  TreeSelec=onListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  valueChanged	
  (TreeSelecaonEvent)	
  
	
  
	
  UndoableEditListener	
  
	
  	
  	
  	
  	
  	
  	
  	
  undoableEditHappened(UndoableEditEvent)	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   40	
  
Fontes	
  de	
  eventos	
  
Cada uma das interfaces anteriores está relacionada
com eventos de uma ou mais classe de
componentes.
Por exemplo, a interface MenuListener está
relacionada com JMenu. Assim, quando a fonte
do evento é um objeto desta classe, os métodos
implementados da interface são acionados.	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   41	
  
Implementação	
  de	
  interface	
  (exemplo)	
  	
  
JMenu file = new JMenu ("File");
file.addMenuListener (new MenuListener() {
public void menuSelected (MenuEvent e) {
System.out.println ("Selected");
}
public void menuDeselected (MenuEvent e) {
System.out.println ("Deselected");
}
public void menuCanceled (MenuEvent e) {
System.out.println ("Canceled");
}
});	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   42	
  
Arquitetura	
  MVC	
  	
  
Além do tratamento básico de eventos anterior, o
pacote Java Swing permite, adicionalmente,
um controle maior sobre os componentes
utilizando a arquitetura Model/View/Controller
(MVC).
Por exemplo, eventos podem ser controlados de
forma complexa através de elementos
chamados chamados adaptadores.
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   43	
  
Look-­‐and-­‐feel	
  	
  
Utilizando a estrutura modular da arquitetura
MVC, componentes Swing podem simular a
aparência de vários sistemas gráficos.
Esta funcionalidade com componentes Swing é
chamada de look-and-feel.
Os pacotes que disponibilizam classes de
manipulação de look-and-feel são identificados
por javax.swing.plaf.*;
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   44	
  
Como	
  alterar	
  a	
  aparência	
  ?	
  	
  
try{
UIManager.setLookAndFeel("javax.swing.plaf.Metal.MetalL
ookandFeel");
}
catch(java.lang.ClassNotFoundException e){...}
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   45	
  
Como	
  pegar	
  o	
  look-­‐and-­‐feel	
  do	
  sistema	
  do	
  
usuário	
  ?	
  	
  
try{
UIManager.setLookAndFeel(
UIManager.getCrossPlataformLookAndFellClassName());
}
catch(java.lang.ClassNotFoundException e){...}
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   46	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   47	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   48	
  
Imagens	
  
•  hip://www.goldb.org/goldblog/cmg_images/
real_programmers_binary.jpg	
  	
  
•  hip://sandersconsulang.com/Portals/58319/
images/checklist.jpg	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   49	
  
Obrigado	
  
	
  
Daniel	
  Arndt	
  Alves	
  
	
  
hip://www.progdan.pro.br/	
  	
  
daniel.alves@mackenzie.br	
  
progdan@progdan.pro.br	
  	
  
Daniel	
  Arndt	
  Alves	
   Java	
  Swing:	
  Hierarquia	
  Window	
   50	
  

Hiearquia Window

  • 1.
    Universidade Presbiteriana Mackenzie   Aula  3:  Hierarquia  Window   Prof. Ms. Daniel Arndt Alves Faculdade  de  Computação  e  Informá=ca   Computação e Informática Faculdade de Linguagem  de   Programação  II   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   1  
  • 2.
    Tópicos  da  Aula   •  Hierarquia  Window  dentro  do   pacote  javax.swing •  Layouts  do  Swing   •  Bordas   •  Tratamento  de  eventos   •  Manipulação  de  look-­‐and-­‐feel   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   2  
  • 3.
    Hierarquia  Window     Além da classe JPanel, já vista nas aulas anteriores, o pacote Swing fornece uma série de alternativas para containers. Uma destas alternativas inicia-se com a hierarquia da classe Window, definida no pacote java.awt.   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   3  
  • 4.
    Hierarquia  Window(II)     Window    (  AWT  )   Dialog    (AWT)   Frame   (AWT)   JWindow   JDialog   JFrame   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   4  
  • 5.
    Classe  JFrame     A classe JFrame é muito similar à classe Frame do AWT. Porém, alguns pontos são exclusivos à classe JFrame: •  os componentes não são inseridos diretamente com add •  a alteração não é feita diretamente só com setLayout •  pode-se definir comportamentos-padrão para evento de fechamento da janela   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   5  
  • 6.
    JFrame (Exemplo)     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   6  
  • 7.
    Código  do  Exemplo     public class FrameTester { public static void main (String args[]) { JFrame f = new JFrame ("JFrame Example"); Container c = f.getContentPane(); c.setLayout (new FlowLayout()); for (int i = 0; i < 5; i++) { c.add (new JButton ("No")); c.add (new Button ("Batter")); } c.add (new JLabel ("Swing")); f.setSize (300, 200); f.show(); } }   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   7  
  • 8.
    Evento  de  fechamento  de  janela     Além do tradicional tratamento de evento de fechamento de janela do AWT, o pacote Swing disponibiliza outras possibilidades de tratamento através do método setDefaultCloseOperation(int operação) Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   8  
  • 9.
    Evento  de  fechamento  de  janela     O parâmetro operação pode ser uma das seguintes constantes: •  DO_NOTHING_ON_CLOSE: comportamento do frame do AWT •  HIDE_ON_CLOSE: comportamento padrão. A janela é apenas escondida. •  DISPOSE_ON_CLOSE: libera todo o conteúdo da janela. •  EXIT_ON_CLOSE: força chamada de System.exit() Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   9  
  • 10.
    Layout  em  Swing     Além dos tradicionais gerenciadores de layout do AWT, o pacote javax.swing disponibiliza 4 gerenciadores adicionais: •  ScrollPaneLayout •  ViewportLayout •  BoxLayout •  OverlayLayout Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   10  
  • 11.
    ScrollPaneLayout     Éo gerenciador de layout utilizado pelo JScrollPane. Não há necessidade de se instanciar uma classe com este gerenciador nem associá-la a um JScrollPane, pois isto já é feito automaticamente. Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   11  
  • 12.
    ViewportLayout     Éo gerenciador de layout usado pelo componente JViewport. Assim como no ScrollPaneLayout, o gerenciador ViewportLayout já está automaticamente associado com um objeto JViewPort. Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   12  
  • 13.
    BoxLayout     Éum gerenciador que permite arranjar os componentes ao longo dos eixos x ou y. O construtor do BoxLayout tem a seguinte forma: BoxLayout(container, eixo) Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   13  
  • 14.
    Código  do  Exemplo     class BoxLayoutTest extends JPanel { BoxLayoutTest() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); TextField textField = new TextField(); TextArea textArea = new TextArea(4, 20); JButton button = new JButton("Tiger", new ImageIcon("SmallTiger.gif")); add(new JLabel("TextField:")); add(textField); add(new JLabel("TextArea:")); add(textArea); add(new JLabel("Button:")); add(button); } }   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   14  
  • 15.
    BoxLayout  (Exemplo)     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   15  
  • 16.
    Bordas     Opacote javax.swing.border consiste de várias classes para desenhar bordas envolvendo componentes. Todas estas classes implementam a interface Border. Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   16  
  • 17.
    Interface  Border A interfaceBorder consiste de três métodos: •  public Insets getBorderInsets(Component c): define a área útil para desenhar a borda •  public boolean isBorderOpaque(): define se a borda é opaca ou transparente •  public void paintBorder(Component c, Graphics g, int x, int y, int width, int height): define como desenhar a borda. Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   17  
  • 18.
    Implementações  pré-­‐definidas  de  bordas   O p a c o t e j a v a x . s w i n g . b o r d e r disponibiliza 9 classes que implementam a interface Border:  AbstractBorder BevelBorder CompoundBorder EmptyBorder EtchedBorder LineBorder MatteBorder SoftBevelBorder TitleBorder Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   18  
  • 19.
    Definição  de  bordas   Caso as bordas anteriores não sejam suficientes para atender às necessidades, basta implementar os métodos da interface Border, mostrados anteriormente.   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   19  
  • 20.
    Instanciação  de  bordas   Bordas podem ser criadas invocando-se o construtor de uma das classes anteriores (exceto AbstractBorder) ou chamando os métodos estáticos da classe BorderFactory (pacote javax.swing). Para se atribuir uma borda a um componente/ c o n t a i n e r , u t i l i z a - s e o m é t o d o setBorder(borda).   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   20  
  • 21.
    Bordas  (Exemplo)     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   21  
  • 22.
    Bordas  (Exemplo)   publicclass BorderPanel extends JPanel { class MyBorder implements Border { Color color; public MyBorder (Color c) { color = c; } public void paintBorder (Component c, Graphics g, int x, int y, int width, int height) { Insets insets = getBorderInsets(c); g.setColor (color); g.fillRect (x, y, 2, height); g.fillRect (x, y, width, 2); g.setColor (color.darker()); Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   22  
  • 23.
    Bordas  (Exemplo)   g.fillRect(x+width-insets.right, y, 2, height); g.fillRect (x, y+height-insets.bottom, width, 2); } public boolean isBorderOpaque() { return false; } public Insets getBorderInsets(Component c) { return new Insets (2, 2, 2, 2); } }   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   23  
  • 24.
    Bordas  (Exemplo)   publicBorderPanel() { setLayout (new GridLayout (4, 3, 5, 5)); JButton b = new JButton("Empty"); b.setBorder (new EmptyBorder (1,1,1,1)); add(b); b = new JButton ("Etched"); b.setBorder (new EtchedBorder ()); add(b); b = new JButton ("ColorizedEtched"); b.setBorder (new EtchedBorder (Color.red, Color.green)); add(b);   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   24  
  • 25.
    Bordas  (Exemplo)   b= new JButton ("Titled/Line"); b.setBorder(new TitledBorder ( new TitledBorder( LineBorder.createGrayLineBorder(),"Hello"), "World", TitledBorder.RIGHT, TitledBorder.BOTTOM)); add(b); b = new JButton ("Bevel Up"); b.setBorder(new BevelBorder(BevelBorder.RAISED)); add(b);   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   25  
  • 26.
    Bordas  (Exemplo)   b= new JButton ("Bevel Down"); b.setBorder(new BevelBorder(BevelBorder.LOWERED)); add(b); b = new JButton ("Soft Bevel Up"); b.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)); add(b); b = new JButton ("Soft Bevel Down"); b.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); add(b); b = new JButton ("Matte"); b.setBorder(new MatteBorder(5, 10, 5, 10, Color.red)); add(b);   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   26  
  • 27.
    Bordas  (Exemplo)   b= new JButton ("Matte Icon"); Icon icon = new ImageIcon ("SmallTiger.gif"); b.setBorder(new MatteBorder(10, 10, 10, 10, icon)); add(b); b = new JButton ("ColorizedBezel"); b.setBorder(new BevelBorder(BevelBorder.RAISED, Color.red, Color.pink)); add(b); b = new JButton ("My/Compound"); b.setBorder(new CompoundBorder(new MyBorder(Color.red), new CompoundBorder (new MyBorder(Color.green), new MyBorder(Color.blue)))); add(b); } }   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   27  
  • 28.
    Eventos     Comogrande parte dos elementos de interface do swing é derivada da classe básica J C o m p o n e n t ( d e r i v a d a d e java.awt.Container), os métodos de gerenciamento de evento definidos no AWT podem ser aplicados neste contexto, embora a maioria das construções utilize classes e interfaces (listeners) definidos dentro do pacote javax.swing Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   28  
  • 29.
    Eventos     Paratratar convenientemente os eventos dentro do swing, existe a necessidade de se conhecer: •  tipos de objetos instanciados nos eventos •  interfaces do tipo listener para implementação •  fontes de eventos e interfaces utilizadas por estas fontes Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   29  
  • 30.
    Objetos  de  evento     AncestorEvent CaretEvent ChangeEvent DocumentEvent HyperlinkEvent InternalFrameEvent ListDataEvent ListSelectionEvent MenuDragMouseEvent MenuEvent MenuKeyEvent PopupMenuEvent TableColumnModelEvent TableModelEvent TreeExpansionEvent TreeModelEvent TreeSelectionEvent UndoableEditEvent Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   30  
  • 31.
    Exemplo  de  objetos  de  evento     JMenu file = new JMenu ("File"); file.addMenuListener (new MenuListener() { public void menuSelected (MenuEvent e) { System.out.println ("Selected"); } public void menuDeselected (MenuEvent e) { System.out.println ("Deselected"); } public void menuCanceled (MenuEvent e) { System.out.println ("Canceled"); } });   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   31  
  • 32.
    Interfaces  do  apo  listener     O pacote swing disponibiliza várias interfaces para tratamento de eventos. Estas interfaces estão localizadas no pacote javax.swing.event. Grande parte das implementações em Swing utilizam os métodos destas interfaces para tratamento dos eventos.                                           Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   32  
  • 33.
    Métodos  das  interfaces  listener   AncestorListener                                                                                                                  ancestorAdded  (AncestorEvent)                                                                                                                  ancestorMoved  (AncestorEvent)                                                                                                                  ancestorRemoved  (AncestorEvent)   CaretListener                                                                                                                  caretUpdate  (CaretEvent)   CellEditorListener                                                                                                                  ediangCanceled  (ChangeEvent)                                                                                                                  ediangStopped  (ChangeEvent)   ChangeListener                                                                                                                  stateChanged  (ChangeEvent)                                                                                         Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   33  
  • 34.
    Métodos  das  interfaces  listener   DocumentListener                                                                                                                  changedUpdate  (DocumentEvent)                                                                                                                  insertUpdate  (DocumentEvent)                                                                                                                  removeUpdate  (DocumentEvent)   HyperlinkListener                                                                                                                  hyperlinkUpdate  (HyperlinkEvent)   InternalFrameListener                                internalFrameAcavated  (InternalFrameEvent)                                internalFrameClosed        (InternalFrameEvent)                                internalFrameClosing  (InternalFrameEvent)                                internalFrameDeacavated  (InternalFrameEvent)                                internalFrameDeiconified  (InternalFrameEvent)                                internalFrameIconified  (InternalFrameEvent)                                internalFrameOpened  (InternalFrameEvent)   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   34  
  • 35.
    Métodos  das  interfaces  listener   ListDataListener                                                                                                                  contentsChanged  (ListDataEvent)                                                                                                                  intervalAdded  (ListDataEvent)                                                                                                                  intervalRemoved  (ListDataEvent)   ListSelec=onListener                                                                                                                  valueChanged  (ListSelecaonEvent)   MenuDragMouseListener                                                                                                                  menuDragMouseDragged                                                                                                                  (MenuDragMouseEvent)                                                                                                                  menuDragMouseEntered                                                                                                                  (MenuDragMouseEvent)   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   35  
  • 36.
    Métodos  das  interfaces  listener   MenuKeyListener                                                                                                                  menuKeyPressed  (MenuKeyEvent)                                                                                                                  menuKeyReleased(MenuKeyEvent)                                                                                                                  menuKeyTyped  (MenuKeyEvent)   MenuListener                                                                                                                  menuCanceled  (MenuEvent)                                                                                                                  menuDeselected  (MenuEvent)                                                                                                                  menuSelected  (MenuEvent)                                                                                                                                                                                                                                                     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   36  
  • 37.
    Métodos  das  interfaces  listener   MouseInputListener                                                                                                                  mouseClicked  (MouseEvent)                                                                                                                  mouseDragged  (MouseEvent)                                                                                                                  mouseEntered  (MouseEvent)                                                                                                                  mouseExited  (MouseEvent)                                                                                                                  mouseMoved  (MouseEvent)                                                                                                                  mousePressed  (MouseEvent)                                                                                                                  mouseReleased  (MouseEvent)   PopupMenuListener                                                                                                                  popupmenuCanceled                                                                                                                  (PopupMenuEvent)                                                                                                                  menuDragMouseExited                                                                                                                  (MenuDragMouseEvent)                                                                                                                  menuDragMouseReleased                                                                                                                  (MenuDragMouseEvent)   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   37  
  • 38.
    Métodos  das  interfaces  listener                                                                                                                  popupMenuWillBecomeInvisible                                                                                                                  (PopupMenuEvent)                                                                                                                  popupMenuWillBecomeVisible                                                                                                                  (PopupMenuEvent)   TableColumnModelListener                                                                                                                  columnAdded                                                                                                                  (TableColumnModelEvent)                                                                                                                  columnMarginChanged                                                                                                                (ChangeEvent)                                                                                                                  columnMoved                                                                                                                  (TableColumnModelEvent)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   38  
  • 39.
    Métodos  das  interfaces  listener                                                                                                                  columnRemoved                                                                                                                  (TableColumnModelEvent)                                                                                                                  columnSelecaonChanged                                                                                                                  (ListSelecaonEvent)   TableModelListener    tableChanged  (TableModelEvent)     TreeExpansionListener    treeCollapsed  (TreeExpansionEvent)            treeExpanded  (TreeExpansionEvent)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   39  
  • 40.
    Métodos  das  interfaces  listener      TreeModelListener                  treeNodesChanged  (TreeModelEvent)                  treeNodesInserted  (TreeModelEvent)                  treeNodesRemoved  (TreeModelEvent)                  treeStructureChanged(TreeModelEvent)      TreeSelec=onListener                  valueChanged  (TreeSelecaonEvent)      UndoableEditListener                  undoableEditHappened(UndoableEditEvent)                                                                                                                                                                                                                                                                                                                                                   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   40  
  • 41.
    Fontes  de  eventos   Cada uma das interfaces anteriores está relacionada com eventos de uma ou mais classe de componentes. Por exemplo, a interface MenuListener está relacionada com JMenu. Assim, quando a fonte do evento é um objeto desta classe, os métodos implementados da interface são acionados.                                                                                                                                                                                                                                                                       Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   41  
  • 42.
    Implementação  de  interface  (exemplo)     JMenu file = new JMenu ("File"); file.addMenuListener (new MenuListener() { public void menuSelected (MenuEvent e) { System.out.println ("Selected"); } public void menuDeselected (MenuEvent e) { System.out.println ("Deselected"); } public void menuCanceled (MenuEvent e) { System.out.println ("Canceled"); } });   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   42  
  • 43.
    Arquitetura  MVC     Além do tratamento básico de eventos anterior, o pacote Java Swing permite, adicionalmente, um controle maior sobre os componentes utilizando a arquitetura Model/View/Controller (MVC). Por exemplo, eventos podem ser controlados de forma complexa através de elementos chamados chamados adaptadores. Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   43  
  • 44.
    Look-­‐and-­‐feel     Utilizandoa estrutura modular da arquitetura MVC, componentes Swing podem simular a aparência de vários sistemas gráficos. Esta funcionalidade com componentes Swing é chamada de look-and-feel. Os pacotes que disponibilizam classes de manipulação de look-and-feel são identificados por javax.swing.plaf.*; Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   44  
  • 45.
    Como  alterar  a  aparência  ?     try{ UIManager.setLookAndFeel("javax.swing.plaf.Metal.MetalL ookandFeel"); } catch(java.lang.ClassNotFoundException e){...} Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   45  
  • 46.
    Como  pegar  o  look-­‐and-­‐feel  do  sistema  do   usuário  ?     try{ UIManager.setLookAndFeel( UIManager.getCrossPlataformLookAndFellClassName()); } catch(java.lang.ClassNotFoundException e){...} Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   46  
  • 47.
    Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   47  
  • 48.
    Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   48  
  • 49.
    Imagens   •  hip://www.goldb.org/goldblog/cmg_images/ real_programmers_binary.jpg     •  hip://sandersconsulang.com/Portals/58319/ images/checklist.jpg     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   49  
  • 50.
    Obrigado     Daniel  Arndt  Alves     hip://www.progdan.pro.br/     daniel.alves@mackenzie.br   progdan@progdan.pro.br     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   50