Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação II
Swing Java
Agenda
Limitação
• Converter seus diversos componentes visuais nos
equivalentes, ou pares, específicos da plataforma
(sistema operacional)
• A aparência de um componente é definido pela
plataforma e não por java.
• Precisava usar recursos de códigos nativos
Origens e filosofias de design
Swing
• Logo depois do lançamento do Java, não demorou muito
tempo para verificar que as limitações e restrições presentes
em AWT eram graves
• Dessa forma uma nova abordagem para criação de interface
de usuário foi colocado na linguagem Java
Swing Java
• Introduzido em 1997
• Mas desde o Java 1.1 já
podia ser utilizada como
uma biblioteca separada
• Foi totalmente integrado ao Java
a partir da versão 1.2
Origens e filosofias de design
Swing
• O Swing resolve as limitações associados aos de AWT com o uso de
dois recursos chaves:
– Componentes Leves
– Aparência adaptável
Filosofia de design swing
• JoptionPane
Método Descrição
showConfirmDialog Faz uma pergunta
showInputDialog É possível fornecer uma entrada de
dados
showMessageDialog Exibe uma mensagem
showOptionDialog Uma mistura dos três anteriores
Caixas de Mensagem
• ShowMessageDialog
JOptionPane.showMessageDialog(parentComponent, message);
JOptionPane.showMessageDialog(parentComponent, message,
title, messageType);
JOptionPane.showMessageDialog(parentComponent, message,
title, messageType, icon);
new ImageIcon(“camiho”);
Message Type
• ERROR_MESSAGE
• INFORMATION_MESSAGE
• WARNING_MESSAGE
• QUESTION_MESSAGE
• PLAIN_MESSAGE
Caixas de Mensagem
• ShowConfirmDialog
JOptionPane.showConfirmDialog(parentComponent, message);
JOptionPane.showConfirmDialog(parentComponent, message,
title, optionType);
JOptionPane.showConfirmDialog(parentComponent, message,
title, optionType, messageType);
JOptionPane.showConfirmDialog(parentComponent, message,
title, optionType, messageType, icon);
Caixas de Mensagem
• ShowConfirmDialog
Option Type
• DEFAULT_OPTION
• YES_NO_OPTION
• YES_NO_CANCEL_OPTION
• OK_CANCEL_OPTION
Título Botão de fechar janela -1
Texto
Ícone de tipo de
mensagem
Botões (0,1,2)
Caixas de Mensagem
• ShowInputDialog
JOptionPane.showInputDialog(message);
JOptionPane.showInputDialog(parentComponent, message);
JOptionPane.showInputDialog(message,
initialSelectionValue);
JOptionPane.showInputDialog(parentComponent,
message, initialSelectionValue);
JOptionPane.showInputDialog(parentComponent,
message, title, messageType);
JOptionPane.showInputDialog(parentComponent, message,
title, messageType, icon,
selectionValues, initialSelectionValue);
Caixas de Mensagem
• ShowInputDialog
– selectionValues: É um vetor de Objetos
Caixa de texto
Combobox
Botões
X: null
Ok: O valor da String
Cancelar: null
Caixas de Mensagem
• ShowOptionDialog
JOptionPane.showOptionDialog(parentComponent, message,
title, optionType, messageType, icon,
options, initialValue);
Component (AWT)
Jcomponent
Contêineres
public Janela() {
super.setSize(500,300);
super.setVisible(true);
}
new Janela();
}
Contêiner
Jframe
Gerenciadores de Leiaute
Construtor
int align;
int hgap, vgap;
BorderLayout
Construtor/Métod Próposito
o
BorderLayout(int Define os espaços
hGap, int vGap) verticais e
horizontais entre os
componentes
setHGap(int) Define os espaços
horizontais entre os
componentes
• painel.setLayout(null);
Null Layout
import javax.swing.JFrame;
new Janela();
}
Exemplo
Janela (Jframe)
Painel Principal (Jpanel)
• Primeiro Passo
• Uma das maneiras de criar uma janela é necessário fazer uma
classe herdar da classe javax.swing.JFrame.
import javax.swing.JFrame;
}
Passo a Passo para Criação de uma Janela
• Segundo Passo
• Definir as propriedades da janela dentro do construtor da
classe. Para fazer isso é necessário acessar alguns atributos da
super classe (JFrame).
import javax.swing.JFrame;
public Janela() {
super.setDeafultCloseOperation(Jframe.EXIT_ON_CLOSE);
super.setTitle(“Titulo da Janela”);
super.setBounds(100,100, 500,300);
super.setVisible(true);
}
}
Passo a Passo para Criação de uma Janela
• Terceiro Passo
• Definir um contêiner secundário (JPanel) e atribuir ao
contêiner principal (Janela que herda de JFrame)
– Declara o painel na classe
– Instancia o painel no construtor
– Seta o layout Nulo (painel.setLayout(null))
– Atribui o painel na janela com o método seContentPane(painel);
• JPanel
– Contêiner/Componente secundário.
Passo a Passo para Criação de uma Janela
import javax.swing.JFrame;
Jpanel painelPrincipal;
public Janela() {
painelPrincipal = new Jpanel();
painelPrincipal.setLayout(null);
super.setContentPane(painelPrincipal);
super.setDeafultCloseOperation(Jframe.EXIT_ON_CLOSE);
super.setTitle(“Titulo da Janela”);
super.setBounds(100,100, 500,300);
super.setVisible(true);
}
}
Componentes
• JButton
– Um dos componentes mais usados do Swing é o botão de ação. Um botão
de ação é a instância de JButton. JButton herda da classe abstrata
AbstractButton, que define a funcionalidade comum dos botões. Os
botões de ação Swing podem conter texto, imagem ou ambos. E esses
elementos podem ser adicionados através da sua sobrecarga de
construtores ou seus métodos.
https://docs.oracle.com/javase/7/docs/api/jav
ax/swing/JButton.html
Componentes
import javax.swing.Jframe;
public class Janela extends JFrame{
JButton btnBotao;
Jpanel painelPrincipal;
public Janela() {
painelPrincipal = new Jpanel();
painelPrincipal.setLayout(null);
super.setDeafultCloseOperation(Jframe.EXIT_ON_CLOSE);
super.setTitle(“Titulo da Janela”);
super.setBounds(100,100, 500,300);
super.setVisible(true);
}
}
Componentes
Evento Ação (Action Listener)
• Quando um botão de ação é pressionado, ele gera um ActionEvent.
A classe ActionEvent é definida por AWT e também é usada por
Swing.
• ActionListener
– É uma interface que define apenas um método, o actionPerformed.
• void actionPerformed(ActionEvent e){}
– Esse método é chamado quando o botão for pressionado. Ele é o
tratador de eventos chamado quando ocorre um evento de
pressionamento de botão.
btnBotao.addActionListener(new ActionListener(
@Override
public void actionPerformed(ActionEvent){
//onde o evento deverá ser tratado
}
));
• JLabel
– Jlabel é um componente no Swing que cria um rótulo, que é um
componente que exibe informações.
– O rótulo é componente mais simples do Swing, porque é passivo, ou
seja, não responde a entradas do usuário, ele apenas exibe saídas. Ele
apenas usa um contêiner para armazenar uma instância de JLabel.
– Pode exibir texto ou imagens. Isso pode ser definido através de sua
sobrecarga de construtores.
painelPrincipal.add(label);
https://docs.oracle.com/javase/7/docs/api/jav
ax/swing/JLabel.html
Componentes
Componentes
• label.setText(“Novo Texto”)
Componentes
• JTextField
– Componente que permite que o usuário insira uma linha de texto.
JTextField herda a classe abstrata JTextComponent, que é a
superclasse de todos os componentes de texto. Ele define vários
construtores.
painelPrincipal.add(tfCaixaTexto);
Componentes
Componentes
• tfCaixaTexto.setText(“Novo Texto”)
Componentes
• JCheckBox
– Uma caixa de seleção no Swing pode ser um objeto do tipo JCheckBox
e o mesmo herda de AbstractButton e JToggleButton. Logo, uma caixa
de seleção é, essencialmente, um tipo especial de botão.
painelPrincipal.add(checkBox);
Componentes
Componentes
• JList
– O JList é a classe de lista básica do Swing, ela da suporte à seleção de
um ou mais itens de uma lista. Embora geralmente a lista seja
composta por strings, é possível criar uma lista de quase todos os
objetos que possam ser exibidos.
– No passado, os itens de JList eram representados como referências
Object. No entanto, com o lançamento da JDK 7, JList tornou-se
genérica.
– O JList pode receber um objeto vector ou um array em seu construtor
Vector<String> vectorLista = new Vector<String>();
vectorLista.add(“A”);
vectorLista.add(“B”);
JList<String> lista = new JList<String>(vectorLista);
lista.setBounds(10,10,100,80);
painelPrincipal.add(lista);
Componentes
Componentes
• JRadioButton
– Uma caixa de seleção no Swing pode ser um objeto do tipo
JRadioButton e o mesmo herda de AbstractButton e JToggleButton.
Logo, uma caixa de seleção é, essencialmente, um tipo especial de
botão.
painelPrincipal.add(radio1);
Componentes
• JRadioButton
– No entanto, para deixar a característica de seleção exclusiva nos
JRadioButtons é necessário usar o objeto ButtonGroup, que irá
gerenciar a seleção e a não seleção de quem estiver selecionado.
• TextArea
– O JTextArea é uma área de texto multi-linha, ou seja, é possível digitar
um texto com várias linhas dentro desse componente. A finalidade de
um caixa de texto é o de permitir ao utilizador inserir informações de
texto de entrada a ser utilizado pelo programa.
– Diretrizes de interface do usuário recomendam uma caixa com uma
única linha de texto quando é necessária apenas uma linha de
entrada, e uma caixa de texto de várias linhas somente se for
necessária mais de uma linha de entrada. Caixas de texto não
editáveis pode servir ao propósito de simplesmente exibir texto.
• JComboBox
– Jcombobox é um componente muito utilizado em Java para a criação
de formulários onde há a possibilidade de várias respostas definidas
para uma pergunta.
– Para popular um JComboBox pode ser usado um Array de objetos ou
Strings e também um Vector de objetos ou Strings.
• JMenubar
– Uma implementação de uma barra de menu. Você pode adicionar
objetos JMenu para a barra de menu para a construção de um menu.
• JMenu
– Uma implementação de um menu – uma janela pop-up contendo
JMenuItems que é exibido quando o usuário seleciona um item no
JMenuBar.
• JMenuItem
– Uma implementação de um item em um menu. Um item de menu é
essencialmente um botão em uma lista. Quando o usuário seleciona o
botão, a ação associada ao item de menu é executado.
Componentes
JMenu
menuCarro
JMenu
menuItemCadastrar menuItemDeletar
JMenuItem
menuItemAlterar
Eventos
• WindowListener
– Para implementar o evento de WindowListener não é muito utilizado
classes anônimas. Geralmente a própria classe que herda de JFrame
para criação da janela implementa a interface WindowListener.
– Como é possível visualizar no exemplo abaixo:
• ItemListener
– É uma interface que define apenas um método, o itemStateChanged.
• void itemStateChanged (ItemEvent e){}
– Esse método é chamado quando o botão for ativado ou desativa. Ele é
o tratador de eventos chamado quando ocorre um evento de botão
ativado/desativado.
checkBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
//Onde o evento deverá ser tratado
}
});
Criação de uma classe anônima que implementa ItemListener para
tratamento do evento.
Evento Item (Item Listener)
• ItemListener
– Para verificar se o botão foi habilitado e desabilitado dentro da classe
anônima que implementa ItemListener, é necessário pegar os dados
do evento passado como parâmetro no método itemStateChanged a
partir do método getStateChange() e comparar com o valor SELECTED
E DESELECTED da enum da Classe ItemEvent.
checkBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e. getStateChange() == ItemEvent.SELECTED){
//Trata o evento aqui
}
}
});
Evento Mouse (Mouse Listener)
• Quando é necessário verificar se algum botão do mouse foi
pressionado é necessário usar a interface MouseListener. A
interface MouseListener é definida por AWT e também é usada por
Swing.
• MouseListener
– É uma interface que define cinco métodos, são eles:
• public void mouseReleased(MouseEvent e) {}
– Esse método é chamado quando o botão do mouse é solto (released)
• public void mousePressed(MouseEvent e){}
– Esse método é chamado quando o botão do mouse é pressionado (pressed)
• public void mouseExited(MouseEvent e){}
– Esse método é chamado quando o cursor do mouse sai da área do componente
• public void mouseExited(MouseEvent e){}
– Esse método é chamado quando o cursor do mouse entra na área do
componente
• public void mouseClicked(MouseEvent e){}
– Esse método é chamdado quando o botão do mouse é clicado e solto (pressed e
released)
Evento Teclado (Key Listener)
• Quando é necessário verificar se alguma tecla do teclado foi
pressionado é necessário usar a interface KeyListener. A interface
KeyListener é definida por AWT e também é usada por Swing.
• KeyListener
– É uma interface que define três métodos, são eles:
• public void keyTyped(KeyEvent e){}
– Esse método é chamado quando uma Tecla for digitada. Verificar classe
KeyEvent para verificar a tecla
• public void keyReleased(KeyEvent e){}
– Esse método é chamado quando uma tecla for solta (released)
• public void keyPressed(KeyEvent e){}
– Esse método é chamado quando uma tecla for pressionada (pressed)