Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
GUI em Java - Swing
1) Caixas de diálogo — JOptionPane
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class DialogosExemplo extends JFrame {
public DialogosExemplo() {
super("Caixas de Diálogo - JOptionPane");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 180);
setLocationRelativeTo(null);
JButton btnMensagem = new JButton("Mensagem");
JButton btnConfirm = new JButton("Confirmação");
JButton btnEntrada = new JButton("Entrada de Texto");
JButton btnOpcoes = new JButton("Opções");
[Link](e ->
[Link](this, "Olá, aluno! 👋",
"Mensagem", JOptionPane.INFORMATION_MESSAGE)
);
[Link](e -> {
int opt = [Link](this, "Deseja
continuar?", "Confirmar", JOptionPane.YES_NO_CANCEL_OPTION);
[Link](this, "Resposta: " + opt);
});
[Link](e -> {
String nome = [Link](this, "Digite
seu nome:");
[Link](this, "Você digitou: " +
nome);
});
[Link](e -> {
String[] cursos = {"Java", "Python", "C#", "JavaScript"};
int idx = [Link](this, "Escolha um
curso:", "Cursos",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null, cursos, cursos[0]);
[Link](this, "Selecionado: " + (idx
>= 0 ? cursos[idx] : "nada"));
});
JPanel p = new JPanel(new FlowLayout());
[Link](btnMensagem); [Link](btnConfirm); [Link](btnEntrada);
[Link](btnOpcoes);
add(p);
}
public static void main(String[] args) {
[Link](() -> new
DialogosExemplo().setVisible(true));
}
}
1
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
2) Formulários (Labels, campos, botões, layout) — JPanel +
GridBagLayout
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class FormularioExemplo extends JFrame {
private JTextField tfNome, tfEmail, tfIdade;
public FormularioExemplo() {
super("Formulário - GridBagLayout");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(480, 240);
setLocationRelativeTo(null);
JPanel form = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
[Link] = new Insets(6,6,6,6);
[Link] = [Link];
JLabel lbNome = new JLabel("Nome:");
JLabel lbEmail = new JLabel("Email:");
JLabel lbIdade = new JLabel("Idade:");
tfNome = new JTextField(20);
tfEmail = new JTextField(20);
tfIdade = new JTextField(5);
JButton btnSalvar = new JButton("Salvar");
JButton btnLimpar = new JButton("Limpar");
[Link]=0; [Link]=0; [Link](lbNome, c);
[Link]=1; [Link]=0; [Link](tfNome, c);
[Link]=0; [Link]=1; [Link](lbEmail, c);
[Link]=1; [Link]=1; [Link](tfEmail, c);
[Link]=0; [Link]=2; [Link](lbIdade, c);
[Link]=1; [Link]=2; [Link](tfIdade, c);
JPanel botoes = new JPanel(new FlowLayout([Link]));
[Link](btnSalvar); [Link](btnLimpar);
add(form, [Link]);
add(botoes, [Link]);
[Link](e -> {
String msg = [Link]("Nome: %s%nEmail: %s%nIdade:
%s",
[Link](), [Link](),
[Link]());
[Link](this, msg, "Dados salvos",
JOptionPane.INFORMATION_MESSAGE);
});
2
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
[Link](e -> {
[Link](""); [Link]("");
[Link]("");
});
}
public static void main(String[] args) {
[Link](() -> new
FormularioExemplo().setVisible(true));
}
}
3
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
3) Texto (rótulos, HTML básico) — JLabel
Arquivo: [Link]
import [Link].*;
import [Link].*;
public class TextoLabelExemplo extends JFrame {
public TextoLabelExemplo() {
super("Texto - JLabel");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 220);
setLocationRelativeTo(null);
JLabel puro = new JLabel("Texto simples com JLabel");
JLabel html = new JLabel("<html><h3>Texto com
<i>HTML</i></h3><p>Você pode <b>formatar</b>
minimamente.</p></html>");
[Link]([Link]);
[Link]([Link]);
setLayout(new GridLayout(2,1));
add(puro);
add(html);
}
public static void main(String[] args) {
[Link](() -> new
TextoLabelExemplo().setVisible(true));
}
}
4
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
4) Campo de texto (com contagem de caracteres) — JTextField
+ DocumentListener
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class CampoTextoExemplo extends JFrame {
public CampoTextoExemplo() {
super("Campo de Texto - JTextField");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 160);
setLocationRelativeTo(null);
JTextField tf = new JTextField(25);
JLabel contador = new JLabel("0 caracteres");
[Link]().addDocumentListener(new DocumentListener() {
private void update() {
[Link]([Link]().length() + " caracteres"); }
public void insertUpdate(DocumentEvent e) { update(); }
public void removeUpdate(DocumentEvent e) { update(); }
public void changedUpdate(DocumentEvent e) { update(); }
});
JPanel p = new JPanel();
[Link](new JLabel("Digite algo:"));
[Link](tf);
[Link](contador);
add(p);
}
public static void main(String[] args) {
[Link](() -> new
CampoTextoExemplo().setVisible(true));
}
}
5
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
5) Caixa de combinação — JComboBox
Arquivo: [Link]
import [Link].*;
import [Link].*;
public class ComboBoxExemplo extends JFrame {
public ComboBoxExemplo() {
super("Caixa de Combinação - JComboBox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 160);
setLocationRelativeTo(null);
String[] cursos = {"Java", "Python", "C#", "JavaScript"};
JComboBox<String> combo = new JComboBox<>(cursos);
[Link](true);
JLabel sel = new JLabel("Selecionado: " +
[Link]());
[Link](e -> [Link]("Selecionado: " +
[Link]()));
JPanel p = new JPanel();
[Link](new JLabel("Curso:"));
[Link](combo);
[Link](sel);
add(p);
}
public static void main(String[] args) {
[Link](() -> new
ComboBoxExemplo().setVisible(true));
}
}
6
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
6) Caixa de seleção — JCheckBox
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class CheckBoxExemplo extends JFrame {
public CheckBoxExemplo() {
super("Caixas de Seleção - JCheckBox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 180);
setLocationRelativeTo(null);
JCheckBox cbEmail = new JCheckBox("Receber emails");
JCheckBox cbNotif = new JCheckBox("Ativar notificações");
JCheckBox cbTermos = new JCheckBox("Aceito os termos");
JLabel status = new JLabel("Selecione opções");
ItemListener il = e -> [Link]([Link]("Emails:
%s | Notif: %s | Termos: %s",
[Link](), [Link](),
[Link]()));
[Link](il);
[Link](il);
[Link](il);
JPanel p = new JPanel(new GridLayout(4,1));
[Link](cbEmail); [Link](cbNotif); [Link](cbTermos);
[Link](status);
add(p);
}
public static void main(String[] args) {
[Link](() -> new
CheckBoxExemplo().setVisible(true));
}
}
7
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
7) Painéis e organização — JPanel + BorderLayout/FlowLayout
Arquivo: [Link]
import [Link].*;
import [Link].*;
public class PaineisExemplo extends JFrame {
public PaineisExemplo() {
super("Painéis e Layouts");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(520, 320);
setLocationRelativeTo(null);
JPanel topo = new JPanel(new FlowLayout([Link]));
[Link](new Color(220,235,255));
[Link](new JLabel("Topo (FlowLayout)"));
[Link](new JButton("Botão A"));
JPanel centro = new JPanel(new GridLayout(2,2,8,8));
[Link]([Link]("Centro
(GridLayout)"));
[Link](new JButton("1"));
[Link](new JButton("2"));
[Link](new JButton("3"));
[Link](new JButton("4"));
JPanel rodape = new JPanel(new FlowLayout([Link]));
[Link](new Color(235,235,235));
[Link](new JButton("OK"));
[Link](new JButton("Cancelar"));
setLayout(new BorderLayout(8,8));
add(topo, [Link]);
add(centro, [Link]);
add(rodape, [Link]);
}
public static void main(String[] args) {
[Link](() -> new
PaineisExemplo().setVisible(true));
}
}
8
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
8) Abas — JTabbedPane
Arquivo: [Link]
import [Link].*;
import [Link].*;
public class AbasExemplo extends JFrame {
public AbasExemplo() {
super("Abas - JTabbedPane");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(520, 300);
setLocationRelativeTo(null);
JTabbedPane tabs = new JTabbedPane();
JPanel p1 = new JPanel();
[Link](new JLabel("Dados Pessoais"));
[Link](new JTextField("Nome", 10));
JPanel p2 = new JPanel();
[Link](new JLabel("Endereço"));
[Link](new JTextField("Rua", 10));
JPanel p3 = new JPanel();
[Link](new JLabel("Preferências"));
[Link](new JCheckBox("Receber emails"));
[Link]("Pessoal", p1);
[Link]("Endereço", p2);
[Link]("Preferências", p3);
add(tabs);
}
public static void main(String[] args) {
[Link](() -> new
AbasExemplo().setVisible(true));
}
}
9
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
9) Botões — JButton (ações e estado)
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class BotoesExemplo extends JFrame {
private int contador = 0;
public BotoesExemplo() {
super("Botões - JButton");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 160);
setLocationRelativeTo(null);
JLabel lbl = new JLabel("Cliques: 0");
JButton btnClique = new JButton("Clique-me");
JButton btnDesabilitar = new JButton("Desabilitar/
Habilitar");
[Link](e -> [Link]("Cliques: " +
(++contador)));
[Link](e ->
[Link](![Link]()));
JPanel p = new JPanel();
[Link](btnClique); [Link](btnDesabilitar); [Link](lbl);
add(p);
}
public static void main(String[] args) {
[Link](() -> new
BotoesExemplo().setVisible(true));
}
}
10
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
10) Botões de rádio — JRadioButton + ButtonGroup
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class RadioButtonsExemplo extends JFrame {
public RadioButtonsExemplo() {
super("Botões de Rádio - JRadioButton");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 180);
setLocationRelativeTo(null);
JRadioButton r1 = new JRadioButton("Masculino");
JRadioButton r2 = new JRadioButton("Feminino");
JRadioButton r3 = new JRadioButton("Outro");
ButtonGroup grupo = new ButtonGroup();
[Link](r1); [Link](r2); [Link](r3);
JLabel sel = new JLabel("Seleção: (nenhuma)");
ActionListener al = e -> [Link]("Seleção: " +
((JRadioButton)[Link]()).getText());
[Link](al);
[Link](al);
[Link](al);
JPanel p = new JPanel(new GridLayout(4,1));
[Link](r1); [Link](r2); [Link](r3); [Link](sel);
add(p);
}
public static void main(String[] args) {
[Link](() -> new
RadioButtonsExemplo().setVisible(true));
}
}
11
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
11) Botões de seleção (toggle) — JToggleButton
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class ToggleButtonsExemplo extends JFrame {
public ToggleButtonsExemplo() {
super("Botões de Seleção - JToggleButton");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420, 160);
setLocationRelativeTo(null);
JToggleButton tg = new JToggleButton("Modo Escuro: OFF");
JLabel status = new JLabel("Tema atual: Claro");
[Link](e -> {
boolean ativo = [Link]();
[Link]("Modo Escuro: " + (ativo ? "ON" : "OFF"));
[Link]("Tema atual: " + (ativo ? "Escuro" :
"Claro"));
});
JPanel p = new JPanel();
[Link](tg); [Link](status);
add(p);
}
public static void main(String[] args) {
[Link](() -> new
ToggleButtonsExemplo().setVisible(true));
}
}
12
Desenvolvimento de Sistemas
Orientação a Objetos | Elementos Gráficos do Java (GUI)
12) Menus — JMenuBar, JMenu, JMenuItem
Arquivo: [Link]
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
import [Link];
public class MenusExemplo extends JFrame {
public MenusExemplo() {
super("Menus - JMenuBar/JMenu/JMenuItem");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(520, 300);
setLocationRelativeTo(null);
JMenuBar barra = new JMenuBar();
JMenu arquivo = new JMenu("Arquivo");
[Link](KeyEvent.VK_A);
JMenuItem novo = new JMenuItem("Novo");
[Link]([Link](KeyEvent.VK_N,
[Link]().getMenuShortcutKeyMaskEx()));
JMenuItem sair = new JMenuItem("Sair");
[Link]([Link](KeyEvent.VK_Q,
[Link]().getMenuShortcutKeyMaskEx()));
[Link](e -> [Link](0));
[Link](e ->
[Link](this, "Novo arquivo criado."));
[Link](novo);
[Link]();
[Link](sair);
JMenu ajuda = new JMenu("Ajuda");
JMenuItem sobre = new JMenuItem("Sobre");
[Link](e ->
[Link](this, "Exemplo de menus\nSwing -
Java"));
[Link](sobre);
[Link](arquivo);
[Link](ajuda);
setJMenuBar(barra);
add(new JLabel("Use os menus acima (Arquivo/Ajuda).",
[Link]), [Link]);
}
public static void main(String[] args) {
[Link](() -> new
MenusExemplo().setVisible(true));
}
}
13