Java Swing

6,425 views
6,172 views

Published on

Introdução ao desenvolvimento de interfaces gráficas em linguagem Java utilizando a biblioteca javax.swing

Published in: Education
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,425
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Java Swing

  1. 1. Universidade Presbiteriana Mackenzie Aula 2: Java Swing Prof. Ms. Daniel Arndt Alves Faculdade de Computação e Informática Linguagem de Programação II Daniel Arndt Alves Java Swing 1
  2. 2. Tópicos da Aula • Introdução ao projeto Swing • Look-and-Feel • Pacote javax.swing • Componentes Swing – JButton – JLabel – JCheckbox – JRadioButton Daniel Arndt Alves Java Swing 2
  3. 3. Tópicos da Aula • Componentes Swing – JToggleButton – JScrollPane – JTextComponent – JPasswordField – JEditorPane – JScrollBar – JSlider Daniel Arndt Alves Java Swing 3
  4. 4. Tópicos da Aula • Componentes Swing – JProgressBar – JComboBox – JList – Menus – JSeparator Daniel Arndt Alves Java Swing 4
  5. 5. Projeto Swing Projeto Swing é parte do JFC, que implementa um novo conjunto de elementos de interface com usuário com mecanismo look-and-feel embutido. É baseado no JDK 1.1 Lightweight UI Framework, um ambiente que tornou as interfaces menos pesadas e mais adaptáveis. Daniel Arndt Alves Java Swing 5
  6. 6. Look and Feel Permite alterar a visualização para simular a aparência dos seguintes sistemas de janelas: • Java ( Metal ) • CDE/Motif • Windows • MacOS Daniel Arndt Alves Java Swing 6
  7. 7. Look and Feel Java Daniel Arndt Alves Java Swing 7
  8. 8. Look and Feel CDE/Motif Daniel Arndt Alves Java Swing 8
  9. 9. Look and Feel Windows Daniel Arndt Alves Java Swing 9
  10. 10. Look and Feel MacOS Daniel Arndt Alves Java Swing 10
  11. 11. Pacotes swing A coleção swing é formada de 17 pacotes de classes, identificados pela inicial javax: javax.swing javax.swing.border javax.swing.border javax.swing.colorchooser javax.swing.event javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.table javax.swing.text javax.swing.text.html javax.swing.text.rtf javax.swing.tree javax.swing.undo javax.accessibility Daniel Arndt Alves Java Swing 11
  12. 12. Pacote javax.swing Pacote de mais alto nível no swing. Consiste de: • componentes • adaptadores • modelos de componentes • interfaces para delegação e para modelos Daniel Arndt Alves Java Swing 12
  13. 13. Pacote javax.swing.border Declara a interface Border e outras classes, que definem estilos de renderização de bordas específicos. Daniel Arndt Alves Java Swing 13
  14. 14. Pacote javax.swing.colorchooser Contém classes de suporte para o componente color chooser. Daniel Arndt Alves Java Swing 14
  15. 15. Pacote javax.swing.event Pacotes para tipos de eventos específicos para swing e listeners. Além dos tipos de eventos do pacote java.awt.event, os componentes swing podem gerar seus próprios tipos de eventos. Daniel Arndt Alves Java Swing 15
  16. 16. Pacote javax.swing.filechooser Contém classes de suporte para o componente file chooser. Daniel Arndt Alves Java Swing 16
  17. 17. Pacotes javax.swing.plaf.* Os pacotes pluggable look-and-feel(plaf) as classes que implementam os diferentes aspectos de look-and-feel para os componentes Swing. Algumas destas classes estão localizadas em subpacotes específicos (basic, metal e multi) e outras diretamente no pacote java.swing.plaf. Daniel Arndt Alves Java Swing 17
  18. 18. Pacote javax.swing.table Contém as interfaces e classes para o componente table. Daniel Arndt Alves Java Swing 18
  19. 19. Pacote javax.swing.text Contém as classes de suporte para o ambiente de documentos do swing. Por exemplo, dá suporte básico para documentos no formato: • HTML • RTF Daniel Arndt Alves Java Swing 19
  20. 20. Pacote javax.swing.text.html Contém as classes de suporte para: • renderizador da linguagem HTML 3.2 • parser para esta mesma versão Daniel Arndt Alves Java Swing 20
  21. 21. Pacote javax.swing.text.rtf Contém as classes de suporte para um renderizador básico do formato de texto RTF ( Rich Text Format ). Exemplos de programas conhecidos que geram tal formato: • WordPad • Microsoft Word Daniel Arndt Alves Java Swing 21
  22. 22. Pacote javax.swing.tree Contém as classes e interfaces que suportam o componente tree. Daniel Arndt Alves Java Swing 22
  23. 23. Pacote javax.swing.undo Disponibiliza as classes de suporte para implementação de capacidade undo/redo nos componentes. Daniel Arndt Alves Java Swing 23
  24. 24. Pacote javax.acessibility Disponibiliza classes e interfaces que funcionam como elementos intermediários entre os elementos de interface swing e tecnologias de acesso interativas, tais como vídeos para deficientes visuais (braile). Daniel Arndt Alves Java Swing 24
  25. 25. Componentes Swing Existe uma quantidade bem variada de componentes disponibilizados pelos pacotes javax.swing. Alguns destes componentes são muito parecidos com os componentes AWT (algumas classes simplesmente acrescentam J no nome da classe AWT). Outros, porém, não encontram similares no AWT. Daniel Arndt Alves Java Swing 25
  26. 26. JButton Os botões em Swing são instanciados com base nesta classe. Adicionalmente ao simples rótulos, o JButton permite: • ícones nos botões • bordas nos botões • botões com cantos arredondados Daniel Arndt Alves Java Swing 26
  27. 27. JButton (Exemplo 1) Daniel Arndt Alves Java Swing 27
  28. 28. JButton (Exemplo 1) public class ButtonPanel extends JPanel { public ButtonPanel () { JButton myButton = new JButton("Tiger"); add(myButton); } } Daniel Arndt Alves Java Swing 28
  29. 29. JButton (Exemplo 2) Daniel Arndt Alves Java Swing 29
  30. 30. JButton (Exemplo 2) public class ButtonPanel extends JPanel { public ButtonPanel() { Icon tigerIcon = new ImageIcon("SmallTiger.gif"); JButton myButton = new JButton("Tiger", tigerIcon); add(myButton); } } Daniel Arndt Alves Java Swing 30
  31. 31. JLabel Os rótulos em Swing também são similares ao AWT. Porém, permitem: • ícones junto com os rótulos • alterar a posição relativa horizontal e vertical do texto em relação ao ícone Daniel Arndt Alves Java Swing 31
  32. 32. JLabel (Exemplo) Daniel Arndt Alves Java Swing 32
  33. 33. JLabel (Exemplo) public class LabelPanel extends JPanel { public LabelPanel() { JLabel plainLabel = new JLabel("Plain Small Label"); add(plainLabel); JLabel fancyLabel = new JLabel("Fancy Big Label"); Font fancyFont = new Font("Serif", Font.BOLD | Font.ITALIC, 32); fancyLabel.setFont(fancyFont); Icon tigerIcon = new ImageIcon("SmallTiger.gif"); fancyLabel.setIcon(tigerIcon); fancyLabel.setHorizontalAlignment(JLabel.RIGHT); add(fancyLabel); } } Daniel Arndt Alves Java Swing 33
  34. 34. JCheckbox Esta classe é similar à classe Checbox do java.awt. A principal diferença reside no fato da possibilidade de utilização de imagens para indicar o estado de seleção. Daniel Arndt Alves Java Swing 34
  35. 35. JCheckbox (Exemplo) Daniel Arndt Alves Java Swing 35
  36. 36. JCheckbox (Exemplo) public class CheckboxPanel extends JPanel { Icon unchecked = new ToggleIcon (false); Icon checked = new ToggleIcon (true); // ToggleIcon é a classe que desenha a caixa de seleção public CheckboxPanel() { setLayout(new GridLayout(2, 1)); JCheckBox cb1 = new JCheckBox("Choose Me", true); cb1.setIcon(unchecked); cb1.setSelectedIcon(checked); JCheckBox cb2 = new JCheckBox("No Choose Me", false); cb2.setIcon(unchecked); cb2.setSelectedIcon(checked); add(cb1); add(cb2); } } Daniel Arndt Alves Java Swing 36
  37. 37. JRadioButton Diferentemente do pacote java.awt, o pacote javax.swing já possui um componente para botões do tipo radio (seleção única dentro de um grupo). Cada grupo é vinculado a uma instância da classe ButtonGroup. Daniel Arndt Alves Java Swing 37
  38. 38. JRadioButton (Exemplo) Daniel Arndt Alves Java Swing 38
  39. 39. JRadioButton (Exemplo) public class RadioButtonPanel extends JPanel { public RadioButtonPanel() { setLayout(new GridLayout(4,1)); JRadioButton radioButton; ButtonGroup rbg = new ButtonGroup(); JLabel label = new JLabel("Annual Salary: "); label.setFont(new Font("SansSerif", Font.BOLD, 14)); add(label); radioButton = new JRadioButton("$45,000"); add (radioButton); rbg.add (radioButton); radioButton.setSelected(true); Daniel Arndt Alves Java Swing 39
  40. 40. JRadioButton (Exemplo) radioButton = new JRadioButton("$60,000"); add (radioButton); rbg.add (radioButton); radioButton = new JRadioButton("$75,000"); radioButton.setMnemonic (KeyEvent.VK_7); add (radioButton); rbg.add (radioButton); } } Daniel Arndt Alves Java Swing 40
  41. 41. JToggleButton Permite selecionar várias opções através de botões. Não possui similar no AWT. Daniel Arndt Alves Java Swing 41
  42. 42. JToggleButton (Exemplo) Daniel Arndt Alves Java Swing 42
  43. 43. JToggleButton (Exemplo) public class ToggleButtonPanel extends JPanel { public ToggleButtonPanel() { setLayout(new GridLayout(4,1, 10, 10)); add (new JToggleButton ("Fe")); add (new JToggleButton ("Fi")); add (new JToggleButton ("Fo")); add (new JToggleButton ("Fum")); } } Daniel Arndt Alves Java Swing 43
  44. 44. JScrollPane Consiste de uma janela que permite gerenciar automaticamente o rolamento horizontal e vertical de seu contéudo. Existe um componente similar em AWT chamado ScrollPane. Daniel Arndt Alves Java Swing 44
  45. 45. JScrollPane (Exemplo) Daniel Arndt Alves Java Swing 45
  46. 46. JScrollPane (Exemplo) public class ScrollPanel extends JPanel { public ScrollPanel() { setLayout(new BorderLayout()); Icon bigTiger = new ImageIcon("BigTiger.gif"); JLabel tigerLabel = new JLabel(bigTiger); JScrollPane scrollPane = new JScrollPane(tigerLabel); add(scrollPane, BorderLayout.CENTER); } } Daniel Arndt Alves Java Swing 46
  47. 47. JTextComponent É uma classe de texto geral, que contém todos os detalhes esperados de um editor de textos. Algumas subclasses interessantes desta classe são: • JTextField • JTextArea • JEditorPane • JPasswordField • JTextPane Daniel Arndt Alves Java Swing 47
  48. 48. JTextField, JTextArea e JTextPane São classes similares ao TextField e TextArea encontrados no AWT. A classe JTextArea pode ser incluída dentro de um JScrollPane para rolagem automática. A classe JTextPane é um poderoso editor de textos que suporta texto formatado, quebra de palavras e exibição de imagens. Daniel Arndt Alves Java Swing 48
  49. 49. JTextField, JTextArea e JTextPane (Exemplo) Daniel Arndt Alves Java Swing 49
  50. 50. JTextField, JTextArea e JTextPane (Exemplo) public class TextPanel extends JPanel { public TextPanel() { setLayout(new BorderLayout()); JTextField textField = new JTextField(); JTextArea textArea = new JTextArea(); JTextPane textPane = new JTextPane(); // Propriedades de fonte do objeto TextPane MutableAttributeSet attr = new SimpleAttributeSet(); StyleConstants.setFontFamily(attr, "Serif"); StyleConstants.setFontSize(attr, 18); StyleConstants.setBold(attr, true); textPane.setCharacterAttributes(attr, false); Daniel Arndt Alves Java Swing 50
  51. 51. JTextField, JTextArea e JTextPane (Exemplo) add(textField, BorderLayout.NORTH); add(new JScrollPane(textArea),BorderLayout.CENTER); add(new JScrollPane(textPane), BorderLayout.SOUTH); } } Daniel Arndt Alves Java Swing 51
  52. 52. JPasswordField Esta classe permite implementar a funcionalidade de não se exibir diretamente os caracteres digitados, subtituindo-os por caracteres de máscara. O caracter de máscara padrão é o asterisco (*). Porém, usando o método setEchoChar(char c), pode-se conseguir o caracter desejado para a máscara. Daniel Arndt Alves Java Swing 52
  53. 53. JPasswordField (Exemplo) Daniel Arndt Alves Java Swing 53
  54. 54. JPasswordField (Exemplo) class PasswordPanel extends JPanel { PasswordPanel() { JPasswordField pass1 = new JPasswordField(20); JPasswordField pass2 = new JPasswordField(20); pass2.setEchoChar ('?'); add(pass1); add(pass2); } } Daniel Arndt Alves Java Swing 54
  55. 55. JEditorPane Classe especializada de JTextComponent para exibição e edição de marcadores HTML 3.2 e alguns outros formatos tais como RTF (Rich Text Format). No caso do HTML, não se trata de um navegador completo, mas possui funcionalidades complexas de exibição de texto e figuras. Daniel Arndt Alves Java Swing 55
  56. 56. JEditorPane (Exemplo) Daniel Arndt Alves Java Swing 56
  57. 57. JEditorPane (Exemplo) public class Browser extends JPanel { Browser() { setLayout (new BorderLayout (5, 5)); JEditorPane jt = new JEditorPane(); JTextField input = new JTextField("http://gamelan.com/workbench/gam/"); jt.setEditable(false); try{ jt.setPage(input.getText()); } catch(IOException e){System.exit(0); } Daniel Arndt Alves Java Swing 57
  58. 58. JEditorPane (Exemplo) JScrollPane pane = new JScrollPane(); pane.setBorder ( BorderFactory.createLoweredBevelBorder()); pane.getViewport().add(jt); add(pane, BorderLayout.CENTER); add (input, BorderLayout.SOUTH); } } Daniel Arndt Alves Java Swing 58
  59. 59. Navegação nos hyperlinks do JEditorPane Caso se quisesse navegar nos hyperlinks definidos dentro da página exibida pelo JEditorPane, precisa-se adicionar um listener para hyperlinks com o método addHyperlinkListener Daniel Arndt Alves Java Swing 59
  60. 60. Exemplo ... jt.setEditable(false); jt.addHyperlinkListener(new HyperlinkListener () { public void hyperlinkUpdate(final HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { SwingUtilities.invokeLater(new Runnable() { public void run() { // Salve a página corrente Document doc = jt.getDocument(); Daniel Arndt Alves Java Swing 60
  61. 61. Exemplo try { URL url = e.getURL(); jt.setPage(url); input.setText (url.toString()); } catch (IOException io) { JOptionPane.showMessageDialog (Browser.this, "Can't follow link", "Invalid Input",JOptionPane.ERROR_MESSAGE); jt.setDocument (doc); // Retorna documento anterior } } // public void run }); }} }); Daniel Arndt Alves Java Swing 61
  62. 62. Ação no JTextField Caso se quisesse acessar diretamente uma página quando se apertasse ENTER do JTextField do exemplo, poder-se-ia implementar um ActionListener para o componente. A atribuição ao componente seria feita com o método addActionListener Daniel Arndt Alves Java Swing 62
  63. 63. Exemplo input.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e) { try { jt.setPage (input.getText()); } catch (IOException ex) { JOptionPane.showMessageDialog ( Browser.this, "Invalid URL", "Invalid Input", JOptionPane.ERROR_MESSAGE); } } }); Daniel Arndt Alves Java Swing 63
  64. 64. JScrollBar A classe JScrollBar oferece uma implementação do ScrollBar encontrado no AWT. Daniel Arndt Alves Java Swing 64
  65. 65. JScrollBar (Exemplo) public class ScrollbarPanel extends JPanel { public ScrollbarPanel() { setLayout(new BorderLayout()); JScrollBar scrollBar1 = new JScrollBar (JScrollBar.VERTICAL, 0, 5, 0, 100); add(scrollBar1, BorderLayout.EAST); JScrollBar scrollBar2 = new JScrollBar (JScrollBar.HORIZONTAL, 0, 5, 0, 100); add(scrollBar2, BorderLayout.SOUTH); } } Daniel Arndt Alves Java Swing 65
  66. 66. JSlider Possui a mesma funcionalidade da JScrollBar. Porém, adiciona dois novos detalhes: • permite adicionar marcas ao lado das barras • permite colocar uma borda (Border) ao lado da barra • permite colocar rótulos ao lado das barras Daniel Arndt Alves Java Swing 66
  67. 67. JSlider (Exemplo) Daniel Arndt Alves Java Swing 67
  68. 68. JSlider (Exemplo) public class SliderPanel extends JPanel { public SliderPanel() { setLayout(new BorderLayout()); JSlider slider1 = new JSlider (JSlider.VERTICAL, 0, 100, 50); slider1.setPaintTicks(true); slider1.setMajorTickSpacing(10); slider1.setMinorTickSpacing(2); add(slider1, BorderLayout.EAST); JSlider slider2 = new JSlider (JSlider.VERTICAL, 0, 100, 50); slider2.setPaintTicks(true); slider2.setMinorTickSpacing(5); add(slider2, BorderLayout.WEST); Daniel Arndt Alves Java Swing 68
  69. 69. JSlider (Exemplo) JSlider slider3 = new JSlider (JSlider.HORIZONTAL, 0, 100, 50); slider3.setPaintTicks(true); slider3.setMajorTickSpacing(10); add(slider3, BorderLayout.SOUTH); JSlider slider4 = new JSlider (JSlider.HORIZONTAL, 0, 100, 50); slider4.setBorder(BorderFactory.createLineBorder(Color.blue)); add(slider4, BorderLayout.NORTH); } } Daniel Arndt Alves Java Swing 69
  70. 70. JSlider (Exemplo 2) Daniel Arndt Alves Java Swing 70
  71. 71. JSlider (Exemplo 2) public class SliderPanel2 extends JPanel { public SliderPanel2() { setLayout(new BorderLayout()); JSlider right, bottom; right = new JSlider(JSlider.VERTICAL, 1, 9, 3); Hashtable h = new Hashtable(); h.put (new Integer (1), new JLabel("Mercury")); h.put (new Integer (2), new JLabel("Venus")); h.put (new Integer (3), new JLabel("Earth")); h.put (new Integer (4), new JLabel("Mars")); h.put (new Integer (5), new JLabel("Jupiter")); h.put (new Integer (6), new JLabel("Saturn")); Daniel Arndt Alves Java Swing 71
  72. 72. JSlider (Exemplo 2) h.put (new Integer (7), new JLabel("Uranus")); h.put (new Integer (8), new JLabel("Neptune")); h.put (new Integer (9), new JLabel("Pluto")); right.setLabelTable (h); right.setPaintLabels (true); bottom = new JSlider(JSlider.HORIZONTAL, 0, 100, 25); bottom.setMajorTickSpacing (10); bottom.setPaintLabels (true); add(right, BorderLayout.EAST); add(bottom, BorderLayout.SOUTH); } } Daniel Arndt Alves Java Swing 72
  73. 73. JProgressBar Permite mostrar, em uma barra de progresso, refletir o andamento de uma operação. Geralmente esta operação é programada através de um processo concorrente (thread) com o processo de execução principal do java (Thread main). Daniel Arndt Alves Java Swing 73
  74. 74. JProgressBar (Exemplo) Daniel Arndt Alves Java Swing 74
  75. 75. JProgressBar (Exemplo) A programação de uma instância da JProgressBar é bem simples: 1. Inicializar a barra 2. Instanciar um thread 3. Para cada operação a ser realizada, invocar o thread e esperar Daniel Arndt Alves Java Swing 75
  76. 76. Inicialização da barra JProgressBar progressBar = new JProgressBar(); progressBar.setMinimum(0); progressBar.setMaximum(quant_operações); Daniel Arndt Alves Java Swing 76
  77. 77. Instanciar Thread Runnable runner = new Runnable() { public void run() { int value = progressBar.getValue(); progressBar.setValue(value+1); } }; Daniel Arndt Alves Java Swing 77
  78. 78. Loop de repetição progressBar.setValue(progressBar.getMinimum()); for (int i = 0; i < quant_operações; i++) { SwingUtilities.invokeAndWait(runner); } Daniel Arndt Alves Java Swing 78
  79. 79. JComboBox A classe JComboBox trabalha como a classe Choice do AWT, porém altera alguns nomes de métodos e adiciona a funcionalidade de edição das opções. Daniel Arndt Alves Java Swing 79
  80. 80. JComboBox (Exemplo) Daniel Arndt Alves Java Swing 80
  81. 81. JComboBox (Exemplo) public class ComboPanel extends JPanel { String choices[] = { "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus","Neptune", "Pluto"}; public ComboPanel() { JComboBox combo1 = new JComboBox(); JComboBox combo2 = new JComboBox(); for (int i=0;i<choices.length;i++) { combo1.addItem (choices[i]); combo2.addItem (choices[i]); } Daniel Arndt Alves Java Swing 81
  82. 82. JComboBox (Exemplo) combo2.setEditable(true); combo2.setSelectedItem("X"); combo2.setMaximumRowCount(4); add(combo1); add(combo2); } } Daniel Arndt Alves Java Swing 82
  83. 83. JList A classe Jlist é similar à classe List do AWT, exceto que não suporta rolamento (scrolling) diretamente. Assim, ela é construída conjuntamente com a classe JScrollPane. Daniel Arndt Alves Java Swing 83
  84. 84. JList (Exemplo) Daniel Arndt Alves Java Swing 84
  85. 85. JList (Exemplo) public class ListPanel extends JPanel { String label [] = {"Cranberry", "Orange", "Banana", "Kiwi", "Blueberry", "Pomegranate", "Apple", "Pear", "Watermelon", "Raspberry", "Snozberry" }; public ListPanel() { setLayout (new BorderLayout()); JList list = new JList(label); JScrollPane pane = new JScrollPane(list); add(pane, BorderLayout.CENTER); } } Daniel Arndt Alves Java Swing 85
  86. 86. Menus Assim como no AWT, existem as seguintes classes para trabalhar com menus: • JMenuItem • JCheckBoxMenuItem • JMenu • JMenuBar Daniel Arndt Alves Java Swing 86
  87. 87. Menus Além destas classes, existem duas outras funcionalidades que não encontram similares no AWT: • JRadioButtonMenuItem: providencia checkboxes mutuamente exclusivos num menu, quando colocados dentro de um ButtonGroup • JMenuItem : permite a associação de um ícone Daniel Arndt Alves Java Swing 87
  88. 88. Menu (Exemplo) Daniel Arndt Alves Java Swing 88
  89. 89. Menu (Exemplo) Daniel Arndt Alves Java Swing 89
  90. 90. Código do Exemplo public class MenuTester extends JFrame implements ActionListener { public void actionPerformed (ActionEvent e) { System.out.println (e.getActionCommand()); } public MenuTester() { super ("Menu Example"); JMenuBar jmb = new JMenuBar(); JMenu file = new JMenu ("File"); JMenuItem item; Daniel Arndt Alves Java Swing 90
  91. 91. Código do Exemplo file.add (item = new JMenuItem ("New")); item.addActionListener (this); file.add (item = new JMenuItem ("Open")); item.addActionListener (this); file.addSeparator(); file.add (item = new JMenuItem ("Close")); item.addActionListener (this); jmb.add (file); Daniel Arndt Alves Java Swing 91
  92. 92. Código do Exemplo JMenu edit = new JMenu ("Edit"); edit.add (item = new JMenuItem ("Copy")); item.addActionListener (this); Icon tigerIcon = new ImageIcon("SmallTiger.gif"); edit.add (item = new JMenuItem ("Woods", tigerIcon)); item.setHorizontalTextPosition (JMenuItem.LEFT); item.addActionListener (this); edit.add (item = new JMenuItem ("Woods", tigerIcon)); item.addActionListener (this); jmb.add (edit); Daniel Arndt Alves Java Swing 92
  93. 93. Código do Exemplo JMenu choice = new JMenu ("Choices"); JCheckBoxMenuItem check = new JCheckBoxMenuItem ("Toggle"); check.addActionListener (this); choice.add (check); ButtonGroup rbg = new ButtonGroup(); JRadioButtonMenuItem rad = new JRadioButtonMenuItem ("Choice 1"); choice.add (rad); rbg.add (rad); rad.addActionListener (this); rad = new JRadioButtonMenuItem ("Choice 2"); choice.add (rad); rbg.add (rad); Daniel Arndt Alves Java Swing 93
  94. 94. Código do Exemplo rad.addActionListener (this); rad = new JRadioButtonMenuItem ("Choice 3"); choice.add (rad); rbg.add (rad); rad.addActionListener (this); jmb.add (choice); setJMenuBar (jmb); } } Daniel Arndt Alves Java Swing 94
  95. 95. JSeparator Classe que permite separar elementos do menu. Pode ser colocada num menu através do método addSeparator() Daniel Arndt Alves Java Swing 95
  96. 96. Daniel Arndt Alves Java Swing 96
  97. 97. Daniel Arndt Alves Java Swing 97
  98. 98. Imagens • http://www.goldb.org/goldblog/cmg_images/ real_programmers_binary.jpg • http://sandersconsulting.com/Portals/58319/i mages/checklist.jpg Daniel Arndt Alves Java Swing 98
  99. 99. Obrigado Daniel Arndt Alves http://www.progdan.pro.br/ daniel.alves@mackenzie.br progdan@progdan.pro.br Daniel Arndt Alves Java Swing 99

×