Академический Документы
Профессиональный Документы
Культура Документы
Para que o usuário possa interagir com a aplicação é necessário que haja uma interface para que este acione as
funcionalidades do programa. JAVA fornece classes que são utilizadas para construir interfaces gráficas com usuário que
ajudam na interação deste com a máquina e deixam os programas mais robustos e elegantes.
• Existe uma infinidade de funcionalidades disponíveis nas bibliotecas de classes Java, destinadas a prover a
comunicação homem-máquina gráfica.
• Os elementos básicos necessários para criar um GUI residem em dois pacotes:
– java.awt: Abstract Windowing Toolkit (classes básicas);
– javax.swing: Swing Components - fornece melhores alternativas aos componentes definidos na classe java.awt.
É nestas classes onde encontramos classes de janelas, botões, menus, painéis, botões de opções, entre outros componentes,
que podem ser estendidos e utilizados em nossas aplicações.
Swing é mais flexível que java.awt porque é implementada toda em Java, enquanto que java.awt é implementada em código
nativo.
Definindo uma janela é dada através da classe JFrame, que serve como container para outros componentes, como botões,
imagens ou painéis. O JFrame possui atributos que definem uma janela, como barra de título e borda. O JPanel é um container
simples que pode ser utilizado para acrescentar componentes em uma janela, que será utilizado mais tarde.
JFrame.
import javax.swing.*;
import java.awt.*;
import javax.swing.*;
public class JanelaJFrame extends JFrame {
JLabel label1;
JLabel label2;
JLabel label3;
JLabel label4 = new JLabel("Rótulo 4", JLabel.CENTER);
public JanelaJFrame(){
pane.add(label1);
pane.add(label2);
pane.add(label3);
pane.add(label4);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setVisible(true);
}
import java.awt.*;
import javax.swing.*;
public JanelaJFrame(){
pane.add(texto1);
pane.add(texto2);
pane.add(texto3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(360, 150);
this.setVisible(true);
}
public JanelaJFrame(){
pane.add(texto1);
pane.add(texto2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(360, 320);
this.setVisible(true);
}
JScrollPane: Painéis de rolagem que permitem que os componentes exibam mais conteúdo do que o espaço ocupado.
Exemplo 5: Mostrando o funcionamento do JScrollPane.
import java.awt.*;
import javax.swing.*;
public JanelaJFrame(){
pane.add(scrollpane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(360, 320);
this.setVisible(true);
}
import java.awt.*;
import javax.swing.*;
public JanelaJFrame(){
pane.add(button1);
pane.add(button2);
pane.add(button3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 150);
this.setVisible(true);
}
Experimento prático :
import java.awt.*;
import javax.swing.*;
public JFrameLog(){
pane.add(labelNome);
pane.add(textNome);
pane.add(labelSenha);
pane.add(textSenha);
pane.add(labelComent);
pane.add(paneComent);
pane.add(buttonOk);
pane.add(buttonCancelar);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(310, 380);
this.setResizable(false); //não pode ter seu tamanho redefinido
this.setVisible(true);
}
import java.awt.*;
import javax.swing.*;
public class JFrameExemplo extends JFrame{
private JLabel label = new JLabel("Linguagem em que programo:");
private JCheckBox checkJava;
private JCheckBox checkCSharp;
private JCheckBox checkVB;
public JFrameExemplo(){
//O JCheckBox possui vários construtores:
checkJava = new JCheckBox("Java");
checkCSharp = new JCheckBox("CSharp");
checkVB = new JCheckBox("Visual Basic");
pane2.add(label);
pane3.add(checkJava);
pane3.add(checkCSharp);
pane3.add(checkVB);
pane1.add(pane2);
pane1.add(pane3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(310, 120);
this.setResizable(false); //formulário não pode ter seu tamanho
//redefinido
this.setVisible(true);
}
import java.awt.*;
import javax.swing.*;
public JFrameExemplo(){
pane.add(label);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(310, 200);
this.setResizable(false); //formulário não pode ter seu tamanho redefinido
this.setVisible(true);
JComboBox: Caixa de combinação que fornece uma lista drop-down e permite a escolha de apenas um item.
import javax.swing.*;
public JFrameExemplo(){
super("Testando JComboBox");
Container pane1 = this.getContentPane();
pane1.setLayout(new GridLayout(2,1));
comboMes.addItem("JANEIRO"); comboMes.addItem("FEVEIRO");
comboMes.addItem("MARÇO"); comboMes.addItem("ABRIL");
comboMes.addItem("MAIO"); comboMes.addItem("JUNHO");
comboMes.addItem("JULHO"); comboMes.addItem("AGOSTO");
comboMes.addItem("SETEMBRO"); comboMes.addItem("OUTUBRO");
comboMes.addItem("NOVEMBRO"); comboMes.addItem("DEZEMBRO");
pane2.add(labelMes);
pane2.add(comboMes);
pane3.add(labelAno);
pane3.add(comboAno);
pane1.add(pane2);
pane1.add(pane3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(310, 120);
this.setResizable(false);
this.setVisible(true);
JList: Lista que agrupa itens que são selecionadas pelo usuário.
import java.awt.*;
import javax.swing.*;
public JFrameExemplo(){
super("JList");
pane.add(scrollpane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(310, 150);
this.setResizable(false);
this.setVisible(true);
}
public static void main(String[] args){
JFrameExemplo exemplo = new JFrameExemplo();
}
}
JTable: Tabela utilizada para exibir dados. Bastante utilizada para representar os dados de um banco de dados.
import java.awt.*;
import javax.swing.*;
public JFrameExemplo(){
super("JTABLE");
this.getContentPane().add(scrollpane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(310, 150);
this.setVisible(true);
Para criação de de barras de menus é necessário a utilização de 3 componentes que trabalham em conjunto.
JMenu: Container representado através de um menu drop-down que server para agrupar outros JMenu e componentes como
JMenuItem, separados entre outros;
public JFrameExemplo(){
super("MENUS");
//adicona os JMenuItem no JMenu
menuArquivo.add(menuItemAbrir);
menuArquivo.add(menuItemNovo);
menuArquivo.add(menuItemSalvar);
menuArquivo.addSeparator();
menuArquivo.add(menuItemFechar);
menuEditar.add(menuItemColar);
menuEditar.add(menuItemCopiar);
menuEditar.add(menuItemRecortar);
menuEditar.addSeparator();
menuEditar.add(menuItemLocalizar);
menuEditar.add(menuItemSubstituir);
//adiciona o JMenu no JMenuBar
menuBar.add(menuArquivo);
menuBar.add(menuEditar);
JOptionPane
showMessageDialog: Caixa de dialógo utilizada para exibir uma messagem para o usuário.
showConfirmDialog: Caixa de dialógio utilizada tanto para exibir uma messagem do usuário como para capturar
uma resposta do usuário.
Exemplo 13: utilizando o JOptionPane.
import javax.swing.*;
public class App1 {
private JPanel jPanel1;
public static void main(String[] args) {
JFrame janela = new JFrame("Minha Primeira Janela");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setSize(400,300);//define o tamanho da janela
janela.setVisible(true);//exibe a janela
JOptionPane.showMessageDialog(null,"Botao Ok Pressionado");
JOptionPane.showConfirmDialog(null, "Deseja confirmar");
}
}
Definindo Layouts
Para definir os layouts é necessário utilizar classes que são conhecidas como gerenciadores de layout. Esses gerenciadores
definem a disposição dos componentes nos paineis.
FlowLayout: Layout de fluxo. Os componentes ficam na ordem em que foram inseridos, da esquerda para direita, e quando
acabar o espaço na linha, passam para a próxima linha.
Com o FlowLayout, defini-se o alinha dos componentes, se é centralizado, alinha a esquerda, entre outros.
O FlowLayout foi bastante utilizado nos exemplos deste material.
import java.awt.*;
import javax.swing.*;
public ExemploLayout(){
FlowLayout layout = new FlowLayout(FlowLayout.CENTER);
pane.add(new JButton("Teste1"));
pane.add(new JButton("Teste2"));
pane.add(new JButton("Teste3"));
pane.add(new JButton("Teste4"));
pane.add(new JButton("Teste5"));
pane.add(new JButton("Teste6"));
pane.add(new JButton("Teste7"));
pane.add(new JButton("Teste8"));
pane.add(new JButton("Teste9"));
frame.setContentPane(pane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
GridLayout: Arruma os componentes como uma tabela, com linhas e colunas. Os componentes são adicionados da esquerda
para direita, de cima para baixo.
import java.awt.*;
import javax.swing.*;
public ExemploLayout(){
/*um GridLayout com 4 linha e 3 colunas
* o GridLayout também pode especificar o intervalo veritical
* e horizontal entre as células*/
GridLayout layout = new GridLayout(4, 3);
frame.setContentPane(pane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
BorderLayout: Gerenciador de Layout que divide o conteiner um 5 seções, norte, sul, leste, oeste, centro.
import java.awt.*;
import javax.swing.*;
public ExemploLayout(){
frame.setContentPane(pane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 250);
frame.setVisible(true);
}
import java.awt.*;
import javax.swing.*;
public ExemploLayout(){
pane.setLayout(gridbag);
setConstraints(constraints, 1, 2, 1, 1, 0, 100); }
constraints.fill = GridBagConstraints.HORIZONTAL; public static void main(String[] args){
JTextField text3 = new JTextField(); ExemploLayout e = new ExemploLayout();
gridbag.setConstraints(text3, constraints); }
pane.add(text3); }
Tratamentos de Eventos
Um evento pode ser um movimento, um clique no mouse, o pressionamento de uma tecla, a seleção de um item em um menu,
a rolagem de um scrollbar e outros. Um mesmo componente pode ter vários ouvidores de eventos, desde que o ouvidor
compatível com o componente gráfico.
Listeners
pacote Java.awt.event.
Listeners são objetos de qualquer classe que implementem uma interface específica para o tipo de evento que deseja tratar.
Listeners são objetos de qualquer classe que implementem uma interface específica para o tipo de evento que deseja tratar.
Essa interface é definida para cada classe de eventos. Então para a classe de eventos java.awt.event.FocusEvent existe a
interface java.awt.event.FocusListener.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
buttonOk.addActionListener(this);
buttonCancelar.addActionListener(this);
this.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
this.getContentPane().add(buttonOk);
this.getContentPane().add(buttonCancelar);
exemplo.setSize(200, 200);
exemplo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
exemplo.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public ExemploEventos(){
buttonCancelar.addActionListener(eventExit);
this.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
this.getContentPane().add(buttonCancelar);
exemplo.setSize(100, 100);
exemplo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
exemplo.setVisible(true);
}
}
public ExemploEventos(){
this.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
this.getContentPane().add(buttonCancelar);
}
exemplo.setSize(100, 100);
exemplo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
exemplo.setVisible(true);
}