Hiearquia Window

741 views

Published on

Hierarquia Window, dentro do pacote Javax Swing

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
741
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Hiearquia Window

  1. 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. 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. 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. 4. Hierarquia  Window(II)     Window    (  AWT  )   Dialog    (AWT)   Frame   (AWT)   JWindow   JDialog   JFrame   Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   4  
  5. 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. 6. JFrame (Exemplo)     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   6  
  7. 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. 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. 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. 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. 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. 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. 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. 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. 15. BoxLayout  (Exemplo)     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   15  
  16. 16. 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  
  17. 17. 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  
  18. 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. 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. 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. 21. Bordas  (Exemplo)     Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   21  
  22. 22. 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  
  23. 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. 24. 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  
  25. 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. 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. 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. 28. 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  
  29. 29. 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  
  30. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 44. 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  
  45. 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. 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. 47. Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   47  
  48. 48. Daniel  Arndt  Alves   Java  Swing:  Hierarquia  Window   48  
  49. 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. 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  

×