Técnicas de Programação II  
Aula 03 – GUI e Swing  
Edirlei Soares de Lima  
<edirlei.lima@uniriotec.br>  
GUI – Graphical User Interface  
•
A API Java fornece diversas classes destinadas a criação de  
interfaces gráficas.  
AWT e Swing  
•
•
AWT (Abstract Window Toolkit):  
–
–
–
API padrão para criação de componentes GUI no início da plataforma  
Java (entre 1995 até 1998);  
Os objetos AWT são construídos sobre objetos de código nativo do  
Sistema Operacional em uso;  
Os componentes GUI originais do pacote java.awt estão diretamente  
associados com as capacidades de GUI da plataforma local.  
Swing:  
–
API escrita puramente em Java (padrão desde 1998);  
–
JLabel, JButton, JTextField, etc, são componentes GUI do pacote  
javax.swing.  
–
Mais flexível que o java.awt porque é implementada toda em Java,  
enquanto que java.awt é implementada em código nativo.  
AWT e Swing  
Containers e Componentes  
•
Uma interface gráfica em Java é baseada em dois elementos:  
–
Containers: servem para agrupar e exibir outros componentes  
–
Componentes: botões, labels, scrollbars, etc.  
•
•
•
Todo programa Java que ofereça uma interface possuí pelo  
menos um container.  
Uma janela de nível mais alto (que não fica contida dentro de  
outra janela) é um Frame ou, na versão Swing, um JFrame;  
O JFrame é um container. Isso significa que ele pode conter  
outros componentes de interface com o usuário.  
Netbeans GUI Builder  
Netbeans GUI Builder – Criando Projeto  
1
) Acesse o menu File->New Project...  
Netbeans GUI Builder – Criando Projeto  
2
) Selecione o tipo de projeto “Java Application” e em seguida  
clique em “Next”:  
Netbeans GUI Builder – Criando Projeto  
3
) De um nome para o projeto, selecione o local onde ele será  
salvo e desmarque a opção “Create Main Class”. Em seguida  
clique em “Finish”:  
Netbeans GUI Builder – Criando Projeto  
4
) Crie um novo “Java Package” no projeto:  
Netbeans GUI Builder – Criando Projeto  
5
) Crie um novo “JFrame Form”:  
Netbeans GUI Builder  
Componentes Básicos - Label  
•
Componente para exibição de texto não-editável ou ícones.  
Componentes Básicos - Label  
•
•
•
Containers e componentes e estrutura da  
interface gráfica;  
Todos os elementos que fazem parte da  
interface gráfica são objetos;  
Todos os objetos possuem um nome  
(variable name) que pode (e deve!) ser  
alterado.  
Componentes Básicos - Label  
•
Principais Propriedades (JLable):  
–
–
–
–
–
–
–
text;  
foreground;  
background;  
font;  
icon;  
toolTipText;  
border;  
Componentes Básicos – TextField  
•
Componente para entrada, edição e exibição de texto.  
Componentes Básicos – TextField  
•
Principais Propriedades (JTextField):  
–
–
–
–
–
–
–
–
text;  
editable;  
foreground;  
background;  
font;  
toolTipText;  
border;  
enabled;  
Componentes Básicos – Button  
•
Componente que representa um botão.  
Componentes Básicos – Button  
•
Principais Propriedades (JButton):  
–
–
–
–
–
–
–
–
text;  
foreground;  
background;  
font;  
icon;  
toolTipText;  
border;  
enabled;  
Componentes Básicos – List  
•
Componente que exibe uma lista de itens e permite que o  
usuário possa seleciona-los.  
Componentes Básicos – List  
•
Principais Propriedades (JList):  
–
–
–
–
–
–
–
–
–
–
model;  
selectionMode;  
selectedIndex;  
visibleRowCount;  
foreground;  
background;  
font;  
toolTipText;  
border;  
enabled;  
Netbeans GUI Builder – Código Gerado  
Eventos – Button  
•
Principais Eventos (JButton):  
–
–
–
–
–
–
–
–
–
actionPerformed;  
mouseClicked;  
mousePressed;  
mouseRelesead;  
mouseMoved;  
mouseEntered  
mouseExited;  
focusGained;  
focusLost;  
Evento actionPerformed – Button  
•
Criando um evento de ativação para o botão (actionPerformed ):  
Evento actionPerformed – Button  
•
Exemplo 1 – Mostrar mensagem com o conteúdo do TextField:  
private void buttonAddActionPerformed(java.awt.event.ActionEvent evt)  
{
JOptionPane.showMessageDialog(this, "Hello " + textNome.getText());  
}
Evento actionPerformed – Button  
•
Exemplo 2 – Adicionar o conteúdo do TextField na List:  
a) Crie um objeto do tipo DefaultListModel para armazenar os  
elementos da lista:  
...  
public class HelloJFrame extends javax.swing.JFrame {  
private DefaultListModel listModel = new DefaultListModel();  
...  
b) No método construtor da classe, associe o listModel a lista:  
...  
public HelloJFrame() {  
initComponents();  
listNomes.setModel(listModel);  
}
...  
Evento actionPerformed – Button  
•
Exemplo 2 – Adicionar o conteúdo do TextField na List:  
c) No evento actionPerformed, adicione o conteúdo do TextField na List:  
...  
private void buttonAddActionPerformed(java.awt.event.ActionEvent evt)  
{
listModel.addElement(textNome.getText());  
textNome.setText("");  
}
...  
Componentes Básicos –  
RadioButton e ButtonGroup  
Componentes que permitem a seleção de opções.  
•
Componentes Básicos – RadioButton  
•
Principais Propriedades (JRadioButton):  
–
–
–
–
–
–
–
–
–
–
text;  
buttonGroup;  
Selected;  
foreground;  
background;  
font;  
icon;  
toolTipText;  
border;  
enabled;  
Usando o RadioButton  
•
Exemplo 3 – Adicionar o conteúdo do TextField em duas List de  
acordo com a opção selecionada no RadioButton.  
–
Interface:  
Usando o RadioButton  
•
Exemplo 3 – Adicionar o conteúdo do TextField nas Lists de  
acordo com a opção selecionada no RadioButton.  
...  
private void buttonAddActionPerformed(java.awt.event.ActionEvent evt)  
{
if (radioBt1.isSelected())  
listModel1.addElement(textNome.getText());  
else if (radioBt2.isSelected())  
listModel2.addElement(textNome.getText());  
textNome.setText("");  
}
...  
Componentes Básicos – CheckBox  
•
Componente que permite a seleção de opções (marcado ou  
não marcado).  
Componentes Básicos – CheckBox  
•
Principais Propriedades (JCheckBox):  
–
–
–
–
–
–
–
–
–
–
text;  
buttonGroup;  
Selected;  
foreground;  
background;  
font;  
icon;  
toolTipText;  
border;  
enabled;  
Usando o CheckBox  
•
Exemplo 4 – Permitir ao usuário escolher se ele deseja limpar  
automaticamente o conteúdo do TextField após adiciona-lo à  
List.  
–
Interface:  
Usando o CheckBox  
•
Exemplo 4 – Permitir ao usuário escolher se ele deseja limpar  
automaticamente o conteúdo do TextField após adiciona-lo à  
List.  
...  
private void buttonAddActionPerformed(java.awt.event.ActionEvent evt)  
{
if (radioBt1.isSelected())  
listModel1.addElement(textNome.getText());  
else if (radioBt2.isSelected())  
listModel2.addElement(textNome.getText());  
if (checkBoxLimpar.isSelected())  
textNome.setText("");  
}
...  
Componentes Básicos – MenuBar  
•
Componente que permite a criação de uma barra de menu.  
Componentes Básicos – MenuItem  
•
Componente que permite a criação de itens para a barra de  
menu.  
Abrindo uma Nova Janela  
•
Exemplo 5 – Criando e abrindo uma nova janela.  
a) Crie um novo JFrame;  
Abrindo uma Nova Janela  
•
Exemplo 5 – Criando e abrindo uma nova janela.  
b) Crie um novo Package e arraste o arquivo de uma imagem para o  
projeto;  
Abrindo uma Nova Janela  
•
Exemplo 5 – Criando e abrindo uma nova janela.  
c) Adicione um novo label ao formulário, colocando a imagem  
previamente selecionada como icone. Adicione também um  
botão para fechar a janela.  
Abrindo uma Nova Janela  
•
Exemplo 5 – Criando e abrindo uma nova janela.  
d) Na janela principal, crie um novo evento para criar e abrir a nova  
janela quando o usuário clicar no item “About” do menu “Help”:  
private void menuAboutActionPerformed(java.awt.event.ActionEvent evt)  
{
AboutJFrame aboutJFrame = new AboutJFrame();  
aboutJFrame.setVisible(true);  
}
Abrindo uma Nova Janela  
•
Exemplo 5 – Criando e abrindo uma nova janela.  
e) Crie um evento “actionPerformed” para o botão fechar, ocultando e  
destruindo a janela quando o usuário clicar no botão:  
private void buttonFecharActionPerformed(java.awt.event.ActionEvent evt)  
{
this.setVisible(false);  
this.dispose();  
}
Componentes Básicos – Frame  
•
Principais Propriedades (JFrame):  
–
–
–
–
–
–
–
–
defaultCloseOperation;  
title;  
background;  
awaysOnTop;  
iconImage;  
resizable;  
undecorated;  
type;  
Componentes Básicos – Tabbed Pane  
•
Componente que permite a criação de telas com abas.  
Componentes Básicos – Tabbed Pane  
Exercícios  
Lista de Exercícios 03 – GUI e Swing  
http://uniriodb2.uniriotec.br