JFrame:
Primeiramente pessoal, o que seria um JFrame?… JFrame são tipos de janelas criadas usando a linguagem
Java para programar, então vamos mostrar o exemplo que será usado nesta postagem:
Exemplo de JFrame
Principais métodos de um JFrame
setLayout()
Monta o layout padrão de um JFrame, por exemplo, ‘null’ faz com que os
componentes, não se sobreponham e não se conflitem com outros
componentes
setDefaultCloseOperation()
Método de como será fechado o frame, por exemplo, ‘EXIT_ON_CLOSE’ sai
totalmente do sistema e da RAM, já o ‘DISPOSE_ON_CLOSE’ só sai da janela
atual
getContentPane().setBackground()
Responsável por pintar a cor de fundo de um JFrame, como por exemplo,
‘Color.WHITE’
setLocationRelativeTo()
Deixa o JFrame alinhado em algum ponto da tela, por exemplo, ‘null’ deixa
alinhado no centro
setIconImage()
Altera o ícone da janela (aceita até mesmo imagens png)
setTitle()
Muda o título do JFrame
setResizable()
Deixa a janela, redimensionável (true) ou não (false)
setSize()
Altera o tamanho da janela, sendo passado por parâmetro x e y, no caso
tamanho largura e altura respectivamente
setVisible()
Deixando a janela visível (true), ou invisível (false)
add()
Adiciona um componente no JFrame, como um botão ou um combo
Referência: docs.oracle.com
JLabel:
JLabel pessoal, assim como em Delphi ou outras linguagens, apenas é um componente visual (mostrando
texto).
Principais métodos de um JLabel
setForeground()
Muda a cor da letra do texto
setBounds()
Método que faz o posicionamento do JLabel, sendo passado por parâmetro, x, y, a e b, nesse
caso, coluna, linha, largura e altura respectivamente
setText()
Altera o texto da JLabel
getText()
Pega o texto atual do JLabel
Referência: docs.oracle.com
JTextField:
JTextField é um componente que pega caracteres digitados pelo usuário, ou seja, frases escritas por usuários.
Principais métodos de um JTextField
grabFocus()
Muda o foco atual para o componente JTextField
setBounds()
Método que faz o posicionamento do JTextField, sendo passado por parâmetro, x, y, a e b, nesse
caso, coluna, linha, largura e altura respectivamente
setText()
Altera o texto do JTextField
getText()
Pega o texto atual do JTextField
Referência: docs.oracle.com
JRadioButton:
Assim como em outras linguagens, no componente JFrame, também tem botões de rádio, os JRadioButton,
sendo que, podem ser agrupados com um ButtonGroup, para que haja melhor integridade dos dados (por
exemplo, deixar dois radios marcados ao mesmo tempo)…
Exemplo de JRadioButton
Principais métodos de um JRadioButton
isSelected()
Verifica se o componente está selecionado (true ou false)
setSelected()
Deixa o componente como selecionado (true ou false)
setBounds()
Método que faz o posicionamento do componente, sendo passado por parâmetro, x, y, a e b,
nesse caso, coluna, linha, largura e altura respectivamente
setForeground()
Muda a cor do texto do radio
setBackground()
Muda a cor de fundo do radio
Referência: docs.oracle.com
JComboBox:
O componente JComboBox é um combo de escolhas, ou seja, uma caixa de seleção com várias opções.
Exemplo de JComboBox
Principais métodos de um JComboBox
getSelectedItem().toString()
Pega o item atual selecionado, e converte para String
getSelectedIndex()
Pega o index selecionado atual (começa na posição 0)
setBounds()
Método que faz o posicionamento do componente, sendo passado por parâmetro,
x, y, a e b, nesse caso, coluna, linha, largura e altura respectivamente
setForeground()
Muda a cor do texto do componente
setBackground()
Muda a cor de fundo do componente
Referência: docs.oracle.com
JFormattedTextField:
Esse componente é semelhante ao JTextField, porém, ele permite criar uma máscara de digitação, para
receber só números, ou outros caracteres especiais.
Exemplo de JFormattedTextField
Principais métodos de um JFormattedTextField
new
JFormattedTextField(MASCARA)
Para se criar uma máscara, usa-se outro componente o MaskFormatter (leia
aqui)
setText()
Altera o texto atual do componente
getText()
Pega o texto atual do componente
setBounds()
Método que faz o posicionamento do JTextField, sendo passado por
parâmetro, x, y, a e b, nesse caso, coluna, linha, largura e altura
respectivamente
setForeground()
Muda a cor do texto do componente
Referência: docs.oracle.com
JCheckBox:
Componente semelhante ao JRadioButton, porém esse você pode marcar ou desmarcar vários de uma vez.
Exemplo de JCheckBox
Principais métodos de um JCheckBox
isSelected()
Retorna true ou false (verdadeiro ou falso), se o componente está marcado
setBounds()
Método que faz o posicionamento do JTextField, sendo passado por parâmetro, x, y, a e b,
nesse caso, coluna, linha, largura e altura respectivamente
setForeground()
Muda a cor do texto do componente
setBackground()
Muda a cor de fundo do componente
Referência: docs.oracle.com
JButton:
Componente responsável por criar um botão no JFrame, e através do clique nele, ser feita códigos de
programação.
Exemplo de JButton
Principais métodos de um JButton
setMnemonic()
Deixa um caracter Minemonico do componente (fica com aquele sublinhado, com isso,
segurando alt e apertando esse caracter, ele pressiona o botão automaticamente)
setToolTipText()
Mostra um texto quando o cursor do mouse estiver sobre o componente
addActionListener()
Adiciona a ação de clicar no botão, porém, deve-se ter uma função actionPerformed, e a
classe deve ter uma implementação do ActionListener
setBounds()
Método que faz o posicionamento do JTextField, sendo passado por parâmetro, x, y, a e b,
nesse caso, coluna, linha, largura e altura respectivamente
setForeground()
Muda a cor do texto do componente
setBackground()
Muda a cor de fundo do componente
Referência: docs.oracle.com
Lembrando que alguns métodos, como notaram, o setBounds, são universais para qualquer componente,
como setEnabled (ativa ou desativa o componente) e o setEditable (ativa ou desativa a edição do
componente).
Abaixo pessoal o ícone usado nesse programa (deve ser colocado na mesma pasta do .java, ou alterar no
código fonte o caminha da imagem):
Ícone de Java
E agora, o código fonte desse programa (exBlog.java):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//bibliotecas
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.MaskFormatter;
//classe exBlog extendida de JFrame, implementando ActionListener
public class exBlog extends JFrame implements
ActionListener{
//Variáveis
private JLabel lblEst,lblNome,lblSex,lblNiv,lblCPF,lblInt;
private JTextField texNome;
private JFormattedTextField texCPF;
private ButtonGroup gruSex;
private JRadioButton radMasc, radFem;
private JComboBox cmbNiv;
private JCheckBox chkIng, chkMat, chkPro, chkLog;
private JButton btnGrav;
//Iniciando o exBlog
public exBlog(){
setLayout(null);
//Label Estudante
lblEst = new JLabel("Estudante: ");
lblEst.setForeground(Color.BLUE);
lblEst.setBounds(120,5,100,20);
add(lblEst);
//Label Nome
lblNome = new JLabel("Nome: ");
lblNome.setBounds(10,35,100,20);
add(lblNome);
//Text Nome
texNome = new JTextField("");
texNome.setBounds(10,65,300,20);
add(texNome);
//Label Sexo
lblSex = new JLabel("Sexo: ");
lblSex.setBounds(10,95,100,20);
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
add(lblSex);
//Radio Masculino
radMasc = new JRadioButton("Masculino");
radMasc.setBounds(10,125,120,20);
radMasc.setForeground(Color.BLUE);
radMasc.setBackground(Color.WHITE);
radMasc.setSelected(true);
//Radio Feminino
radFem = new JRadioButton("Feminino");
radFem.setBounds(200,125,120,20);
radFem.setForeground(Color.BLUE);
radFem.setBackground(Color.WHITE);
//Grupo de Botões
gruSex = new ButtonGroup();
gruSex.add(radMasc);
gruSex.add(radFem);
add(radMasc);
add(radFem);
//Label Nível
lblNiv = new JLabel("Nível Estudantil: ");
lblNiv.setBounds(10,155,200,20);
add(lblNiv);
//Combo Nível
cmbNiv = new JComboBox();
cmbNiv.setBackground(Color.WHITE);
cmbNiv.addItem("Básico Completo");
cmbNiv.addItem("Médio Completo");
cmbNiv.addItem("Superior Completo");
cmbNiv.addItem("Doutorado e/ou Mestrado Completo");
cmbNiv.setBounds(10,185,300,20);
add(cmbNiv);
//Label CPF
lblCPF = new JLabel("CPF: ");
lblCPF.setBounds(10,215,100,20);
add(lblCPF);
//Campo com máscara - CPF
try {
MaskFormatter mk= new MaskFormatter("###.###.###-##");
mk.setPlaceholderCharacter('_');
/* ou, pode setar os caracteres que irá receber
MaskFormatter mk= new MaskFormatter("***.***.***-**");
mk.setPlaceholderCharacter('_');
mk.setValidCharacters("ABC0123456.");
*/
texCPF = new JFormattedTextField(mk);
texCPF.setBounds(10,245,300,20);
add(texCPF);
}
catch(Exception e){}
//Label Interesses
lblInt = new JLabel("Interesses: ");
lblInt.setBounds(10,275,100,20);
add(lblInt);
//Check Inglês
chkIng = new JCheckBox("Inglês");
chkIng.setBounds(10,305,120,20);
chkIng.setForeground(Color.BLUE);
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
chkIng.setBackground(Color.WHITE);
add(chkIng);
//Check Matemática
chkMat = new JCheckBox("Matemática");
chkMat.setBounds(170,305,120,20);
chkMat.setForeground(Color.BLUE);
chkMat.setBackground(Color.WHITE);
add(chkMat);
//Check Programação
chkPro = new JCheckBox("Programação");
chkPro.setBounds(10,335,120,20);
chkPro.setForeground(Color.BLUE);
chkPro.setBackground(Color.WHITE);
add(chkPro);
//Check Lógica
chkLog = new JCheckBox("Lógica");
chkLog.setBounds(170,335,120,20);
chkLog.setForeground(Color.BLUE);
chkLog.setBackground(Color.WHITE);
add(chkLog);
//Botão Ok
btnGrav = new JButton("Ok");
btnGrav.setBounds(110,385,120,40);
btnGrav.setMnemonic('O');
btnGrav.setToolTipText("Ok...");
btnGrav.setForeground(Color.RED);
btnGrav.addActionListener(this);
add(btnGrav);
}
//Função responsável pelos cliques
public void actionPerformed(ActionEvent acesso){
String sSexo="";
String sNivel="";
String sExec="";
Boolean bChave=true;
//se o acesso for via botão gravar-ok
if(acesso.getSource() == btnGrav){
//pegando o nivel de escolaridade
sNivel=cmbNiv.getSelectedItem().toString();
//verificando os radios
if(radFem.isSelected())
sSexo="F";
if(radMasc.isSelected())
sSexo="M";
//montando a frase que será mostrada
sExec="Nome = '"+texNome.getText()+"'\n"+
"Sexo = '"+sSexo+"'\n"+
"Nivel= '"+sNivel+"'\n"+
"CPF = '"+texCPF.getText()+"'\n"+
"-----------------------------\n"+
"Interesses:\n"+
"Inglês? "+chkIng.isSelected()+"\n"+
"Matemática? "+chkMat.isSelected()+"\n"+
"Programação? "+chkPro.isSelected()+"\n"+
"Lógica? "+chkLog.isSelected();
//mostrando a frase
JOptionPane.showMessageDialog(null,sExec,"Atenção",1);
//se a chave for verdadeira, chama função limpaDados
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
if(bChave){
limpaDados();
}
//Muda o foco do componente
texNome.grabFocus();
}
}
//Função principal que irá criar a janela
public static void main(String arg[])
{
exBlog ex = new exBlog();
ex.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ex.getContentPane().setBackground(Color.WHITE);
//ícone na mesma pasta do código fonte
ex.setIconImage(new ImageIcon("ico.png").getImage());
ex.setTitle("Estudantes...");
//tira o maximizar e alteração do tamanho
ex.setResizable(false);
ex.setSize(350,480);
ex.setVisible(true);
ex.setLocationRelativeTo(null);
}
//função que limpa o programa e deixa ele como executado da
primeira vez
private void limpaDados(){
texNome.setText("");
texCPF.setText("");
radMasc.setSelected(true);
chkIng.setSelected(false);
chkMat.setSelected(false);
chkPro.setSelected(false);
cmbNiv.setSelectedIndex(0);
}
}
E agora, uma imagem da saída do programa:
Exemplo – Saída do Programa (Mensagem)
Controlando eventos e ações
Se você parar para reparar, um aplicativo gráfico é como se fosse como um cardápio de um restaurante. Você chega,
faz seus pedidos e suas ordens são atendidas.
Cada pessoa vai fazer pedidos diferentes, tanto dos pratos como do número de coisas ordenadas.
Da mesma maneira é uma aplicação gráfica em Java.
Um programa nada mais é que uma série de opções, onde cada usuário vai fazer o que quiser, clicando em botões,
apertando teclas do teclado, rolando a barra de informações, marcando, selecionando, escrevendo, minimizando,
fechando e uma infinidade de possibilidades.
Cada vez que o usuário faz uma destas coisas, dizemos que foi realizado um evento.
Ou seja, um click, o mouse passou em alguma região e algo mudou, ele escreveu algo, deu enter etc etc.
O que a GUI (Graphic User Interface) faz é nada mais que tratar estes eventos.
Se ele apertar isso, acontece aquele, Se digitar isso, aquilo abre.
Se clicar aqui, aquilo vai fechar. Se apertar enter, vai pra próxima janela etc etc.
Ou seja, um aplicativo gráfico é uma maneira do usuário realizar pedidos e comandos de uma maneira bem mais
simples e intuitiva.
O usuário realiza o evento, e uma ação ocorre.
E é isso que vamos aprender neste tutorial de Java de nossa apostila. Vamos aprender a identificar os eventos e
realizar as ações que queiramos que aconteça.
Como tratar eventos - A
interface ActionListener e o
métodoactionPerformed
Existe uma classe em Java que será a responsável pelo tratamento de eventos.
Ou seja, é nela que vamos identificar o evento que ocorreu e é nela que vamos definir que ações nossos aplicativos
devem executar quando tal evento ocorrer.
A classe ActionListener é uma interface, ou seja, é classe composta apenas de métodos abstratos.
E isso é até óbvio, pois a classe não tem como saber que tipos de eventos vamos tratar em um aplicativo, muito
menos vai saber que tipo ação queremos que nosso software tome quando um evento ocorrer.
Listener pode ser traduzido como 'ouvinte'.
E isso faz sentido, pois essa interface é que vai ficar 'esperando' algo ocorrer. É como se ela ficasse em um loop
infinito, o tempo todo testando:
"Ocorreu algo agora? E agora? Foi um evento? É um evento? E agora? E agora?..."
Ou seja, a interface fica na 'escuta', na espreita até o usuário fazer alguma interação com o aplicativo e um evento
ocorrer.
A interface ActionListener possui somente um método. Então temos apenas um método obrigatório para implementar,
que é o método actionPerformed, e ele é o responsável por tomar alguma ação caso algum evento ocorra.
Assim, a interface fica na espera de algum evento, e caso ocorra ele é imediatamente passado para o
método actionPerformed. É dentro deste método que iremos definir as ações que ocorrem.
Para fazer uso dessas funcionalidades, devemos importar:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
Download

JFrame: Primeiramente pessoal, o que seria um JFrame?… JFrame