SlideShare uma empresa Scribd logo
1 de 99
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
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
Tópicos da Aula
• Componentes Swing
– JToggleButton
– JScrollPane
– JTextComponent
– JPasswordField
– JEditorPane
– JScrollBar
– JSlider
Daniel Arndt Alves Java Swing 3
Tópicos da Aula
• Componentes Swing
– JProgressBar
– JComboBox
– JList
– Menus
– JSeparator
Daniel Arndt Alves Java Swing 4
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
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
Look and Feel Java
Daniel Arndt Alves Java Swing 7
Look and Feel CDE/Motif
Daniel Arndt Alves Java Swing 8
Look and Feel Windows
Daniel Arndt Alves Java Swing 9
Look and Feel MacOS
Daniel Arndt Alves Java Swing 10
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
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
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
Pacote javax.swing.colorchooser
Contém classes de suporte para o componente
color chooser.
Daniel Arndt Alves Java Swing 14
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
Pacote javax.swing.filechooser
Contém classes de suporte para o componente
file chooser.
Daniel Arndt Alves Java Swing 16
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
Pacote javax.swing.table
Contém as interfaces e classes para o
componente table.
Daniel Arndt Alves Java Swing 18
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
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
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
Pacote javax.swing.tree
Contém as classes e interfaces que suportam o
componente tree.
Daniel Arndt Alves Java Swing 22
Pacote javax.swing.undo
Disponibiliza as classes de suporte para
implementação de capacidade undo/redo nos
componentes.
Daniel Arndt Alves Java Swing 23
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
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
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
JButton (Exemplo 1)
Daniel Arndt Alves Java Swing 27
JButton (Exemplo 1)
public class ButtonPanel
extends JPanel {
public ButtonPanel () {
JButton myButton = new JButton("Tiger");
add(myButton);
}
}
Daniel Arndt Alves Java Swing 28
JButton (Exemplo 2)
Daniel Arndt Alves Java Swing 29
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
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
JLabel (Exemplo)
Daniel Arndt Alves Java Swing 32
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
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
JCheckbox (Exemplo)
Daniel Arndt Alves Java Swing 35
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
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
JRadioButton (Exemplo)
Daniel Arndt Alves Java Swing 38
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
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
JToggleButton
Permite selecionar várias opções através de
botões.
Não possui similar no AWT.
Daniel Arndt Alves Java Swing 41
JToggleButton (Exemplo)
Daniel Arndt Alves Java Swing 42
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
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
JScrollPane (Exemplo)
Daniel Arndt Alves Java Swing 45
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
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
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
JTextField, JTextArea e
JTextPane (Exemplo)
Daniel Arndt Alves Java Swing 49
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
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
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
JPasswordField (Exemplo)
Daniel Arndt Alves Java Swing 53
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
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
JEditorPane (Exemplo)
Daniel Arndt Alves Java Swing 56
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
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
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
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
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
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
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
JScrollBar
A classe JScrollBar oferece uma
implementação do ScrollBar encontrado
no AWT.
Daniel Arndt Alves Java Swing 64
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
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
JSlider (Exemplo)
Daniel Arndt Alves Java Swing 67
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
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
JSlider (Exemplo 2)
Daniel Arndt Alves Java Swing 70
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
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
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
JProgressBar (Exemplo)
Daniel Arndt Alves Java Swing 74
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
Inicialização da barra
JProgressBar progressBar = new JProgressBar();
progressBar.setMinimum(0);
progressBar.setMaximum(quant_operações);
Daniel Arndt Alves Java Swing 76
Instanciar Thread
Runnable runner = new Runnable() {
public void run() {
int value = progressBar.getValue();
progressBar.setValue(value+1);
}
};
Daniel Arndt Alves Java Swing 77
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
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
JComboBox (Exemplo)
Daniel Arndt Alves Java Swing 80
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
JComboBox (Exemplo)
combo2.setEditable(true);
combo2.setSelectedItem("X");
combo2.setMaximumRowCount(4);
add(combo1);
add(combo2);
}
}
Daniel Arndt Alves Java Swing 82
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
JList (Exemplo)
Daniel Arndt Alves Java Swing 84
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
Menus
Assim como no AWT, existem as seguintes classes para
trabalhar com menus:
• JMenuItem
• JCheckBoxMenuItem
• JMenu
• JMenuBar
Daniel Arndt Alves Java Swing 86
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
Menu (Exemplo)
Daniel Arndt Alves Java Swing 88
Menu (Exemplo)
Daniel Arndt Alves Java Swing 89
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
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
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
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
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
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
Daniel Arndt Alves Java Swing 96
Daniel Arndt Alves Java Swing 97
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
Obrigado
Daniel Arndt Alves
http://www.progdan.pro.br/
daniel.alves@mackenzie.br
progdan@progdan.pro.br
Daniel Arndt Alves Java Swing 99

Mais conteúdo relacionado

Mais procurados

[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
洪 鹏发
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
Pacc UAB
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 

Mais procurados (20)

Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
Flutter
FlutterFlutter
Flutter
 
Java script
Java scriptJava script
Java script
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Brief History of JavaScript
Brief History of JavaScriptBrief History of JavaScript
Brief History of JavaScript
 
POO - Aula 04 - Introdução a classes e objetos
POO - Aula 04 - Introdução a classes e objetosPOO - Aula 04 - Introdução a classes e objetos
POO - Aula 04 - Introdução a classes e objetos
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
 
ModulFlutter-1.pptx
ModulFlutter-1.pptxModulFlutter-1.pptx
ModulFlutter-1.pptx
 
Game development using Flutter
Game development using FlutterGame development using Flutter
Game development using Flutter
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
React Hooks
React HooksReact Hooks
React Hooks
 
Javascript
JavascriptJavascript
Javascript
 
SwiftUI For Production | try! Swift 2019
SwiftUI For Production | try! Swift 2019SwiftUI For Production | try! Swift 2019
SwiftUI For Production | try! Swift 2019
 
Reactjs
ReactjsReactjs
Reactjs
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 

Destaque

Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
Armando Daniel
 

Destaque (20)

Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
THREADS EM JAVA: INTRODUÇÃO
THREADS EM JAVA: INTRODUÇÃOTHREADS EM JAVA: INTRODUÇÃO
THREADS EM JAVA: INTRODUÇÃO
 
Java e net beans
Java e net beans Java e net beans
Java e net beans
 
Socket
SocketSocket
Socket
 
Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
 
Java gui
Java guiJava gui
Java gui
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise Edition
 
Hiearquia Window
Hiearquia WindowHiearquia Window
Hiearquia Window
 
Java RMI
Java RMIJava RMI
Java RMI
 
Sessao
SessaoSessao
Sessao
 
Histórico de Participação do Mackenzie na Maratona de Programação
Histórico de Participação do Mackenzie na Maratona de ProgramaçãoHistórico de Participação do Mackenzie na Maratona de Programação
Histórico de Participação do Mackenzie na Maratona de Programação
 
Java10
Java10Java10
Java10
 
Linguagem de Programação II - Apresentação da Disciplina
Linguagem de Programação II - Apresentação da DisciplinaLinguagem de Programação II - Apresentação da Disciplina
Linguagem de Programação II - Apresentação da Disciplina
 
Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
 
Gerenciadores de Layout
Gerenciadores de LayoutGerenciadores de Layout
Gerenciadores de Layout
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Selection Sort
Selection SortSelection Sort
Selection Sort
 

Semelhante a Java Swing

Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
Verônica Veiga
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Adriano Teixeira de Souza
 
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv UiArquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
Erisvaldo Junior
 
Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011
Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011
Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011
Bruno Ghisi
 

Semelhante a Java Swing (20)

Java swing
Java swingJava swing
Java swing
 
Interface Gráfica.ppt
Interface Gráfica.pptInterface Gráfica.ppt
Interface Gráfica.ppt
 
Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java Platform
 
JavaFx - Introdução
JavaFx - IntroduçãoJavaFx - Introdução
JavaFx - Introdução
 
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdfAula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
 
Java
JavaJava
Java
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiArquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
 
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv UiArquitetura De Ap Is GráFicas Do Java Dtv   Lwuit E Dtv Ui
Arquitetura De Ap Is GráFicas Do Java Dtv Lwuit E Dtv Ui
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)
 
Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011
Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011
Implementando LWUIT para TV Digital (Ginga-J) - JavaOne 2011
 
01 java fundamentos
01 java fundamentos01 java fundamentos
01 java fundamentos
 
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 

Mais de Daniel Arndt Alves

Mais de Daniel Arndt Alves (16)

Variaveis Superglobais
Variaveis SuperglobaisVariaveis Superglobais
Variaveis Superglobais
 
Programacao Modular
Programacao ModularProgramacao Modular
Programacao Modular
 
Strings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPStrings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHP
 
Introducao ao PHP
Introducao ao PHPIntroducao ao PHP
Introducao ao PHP
 
Arquitetura web
Arquitetura webArquitetura web
Arquitetura web
 
HTML Básico
HTML BásicoHTML Básico
HTML Básico
 
Conceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosConceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos Distribuidos
 
Exercicios - Java Swing Listeners
Exercicios - Java Swing ListenersExercicios - Java Swing Listeners
Exercicios - Java Swing Listeners
 
Estrutura de Dados II - Plano de Ensino
Estrutura de Dados II - Plano de EnsinoEstrutura de Dados II - Plano de Ensino
Estrutura de Dados II - Plano de Ensino
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da Disciplina
 
Técnicas de Programação Aplicada III - Apresentação da Disciplina
Técnicas de Programação Aplicada III - Apresentação da DisciplinaTécnicas de Programação Aplicada III - Apresentação da Disciplina
Técnicas de Programação Aplicada III - Apresentação da Disciplina
 
Técnicas de Programação Aplicada III - Plano de Ensino
Técnicas de Programação Aplicada III - Plano de EnsinoTécnicas de Programação Aplicada III - Plano de Ensino
Técnicas de Programação Aplicada III - Plano de Ensino
 
Linguagem de Programação II - Plano de Ensino
Linguagem de Programação II - Plano de EnsinoLinguagem de Programação II - Plano de Ensino
Linguagem de Programação II - Plano de Ensino
 
Novos Recursos do Moodle 2
Novos Recursos do Moodle 2Novos Recursos do Moodle 2
Novos Recursos do Moodle 2
 
Novos Recursos do Moodle 2.0 (Paper)
Novos Recursos do Moodle 2.0 (Paper)Novos Recursos do Moodle 2.0 (Paper)
Novos Recursos do Moodle 2.0 (Paper)
 
Modelos de Integração Moodle - Sistemas de Gestão Acadêmicos e Administrativos
Modelos de Integração Moodle - Sistemas de Gestão Acadêmicos e AdministrativosModelos de Integração Moodle - Sistemas de Gestão Acadêmicos e Administrativos
Modelos de Integração Moodle - Sistemas de Gestão Acadêmicos e Administrativos
 

Último

Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 

Último (20)

P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUAO PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Aula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.pptAula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.ppt
 

Java Swing

  • 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. 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. Tópicos da Aula • Componentes Swing – JToggleButton – JScrollPane – JTextComponent – JPasswordField – JEditorPane – JScrollBar – JSlider Daniel Arndt Alves Java Swing 3
  • 4. Tópicos da Aula • Componentes Swing – JProgressBar – JComboBox – JList – Menus – JSeparator Daniel Arndt Alves Java Swing 4
  • 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. 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. Look and Feel Java Daniel Arndt Alves Java Swing 7
  • 8. Look and Feel CDE/Motif Daniel Arndt Alves Java Swing 8
  • 9. Look and Feel Windows Daniel Arndt Alves Java Swing 9
  • 10. Look and Feel MacOS Daniel Arndt Alves Java Swing 10
  • 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. 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. 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. Pacote javax.swing.colorchooser Contém classes de suporte para o componente color chooser. Daniel Arndt Alves Java Swing 14
  • 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. Pacote javax.swing.filechooser Contém classes de suporte para o componente file chooser. Daniel Arndt Alves Java Swing 16
  • 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. Pacote javax.swing.table Contém as interfaces e classes para o componente table. Daniel Arndt Alves Java Swing 18
  • 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. 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. 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. Pacote javax.swing.tree Contém as classes e interfaces que suportam o componente tree. Daniel Arndt Alves Java Swing 22
  • 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. 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. 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. 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. JButton (Exemplo 1) Daniel Arndt Alves Java Swing 27
  • 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. JButton (Exemplo 2) Daniel Arndt Alves Java Swing 29
  • 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. 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. JLabel (Exemplo) Daniel Arndt Alves Java Swing 32
  • 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. 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. JCheckbox (Exemplo) Daniel Arndt Alves Java Swing 35
  • 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. 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. JRadioButton (Exemplo) Daniel Arndt Alves Java Swing 38
  • 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. 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. JToggleButton Permite selecionar várias opções através de botões. Não possui similar no AWT. Daniel Arndt Alves Java Swing 41
  • 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. 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. JScrollPane (Exemplo) Daniel Arndt Alves Java Swing 45
  • 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. 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. 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. JTextField, JTextArea e JTextPane (Exemplo) Daniel Arndt Alves Java Swing 49
  • 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. 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. 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
  • 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. 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. JEditorPane (Exemplo) Daniel Arndt Alves Java Swing 56
  • 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. 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. 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. 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. 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. 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. 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. JScrollBar A classe JScrollBar oferece uma implementação do ScrollBar encontrado no AWT. Daniel Arndt Alves Java Swing 64
  • 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. 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. JSlider (Exemplo) Daniel Arndt Alves Java Swing 67
  • 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. 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. JSlider (Exemplo 2) Daniel Arndt Alves Java Swing 70
  • 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. 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. 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. JProgressBar (Exemplo) Daniel Arndt Alves Java Swing 74
  • 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. Inicialização da barra JProgressBar progressBar = new JProgressBar(); progressBar.setMinimum(0); progressBar.setMaximum(quant_operações); Daniel Arndt Alves Java Swing 76
  • 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. 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. 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. JComboBox (Exemplo) Daniel Arndt Alves Java Swing 80
  • 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
  • 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. JList (Exemplo) Daniel Arndt Alves Java Swing 84
  • 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. Menus Assim como no AWT, existem as seguintes classes para trabalhar com menus: • JMenuItem • JCheckBoxMenuItem • JMenu • JMenuBar Daniel Arndt Alves Java Swing 86
  • 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. Menu (Exemplo) Daniel Arndt Alves Java Swing 88
  • 89. Menu (Exemplo) Daniel Arndt Alves Java Swing 89
  • 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. 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. 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. 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. 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. 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. Daniel Arndt Alves Java Swing 96
  • 97. Daniel Arndt Alves Java Swing 97