Olá pessoal…
Hoje irei falar um pouco de programação Java, mais precisamente, sobre um JFrame, e seus principais componentes, como Labels, Combos, Botões, etc…
Pessoal, irei tratar aqui no blog, sobre os principais (ou alguns dos mais usados) componentes gráficos no mundo Java, e mostrar os principais métodos.
$> 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:
| 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)…
| 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.
| 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.
| 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.
| 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.
| 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):
E agora, o código fonte desse programa (exBlog.java):
//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);
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);
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
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:
Bom pessoal, por hoje é só.
Abraços e até a próxima.






Me ajudou muito!
Valeu xD
Opa, eu que agradeço o apoio Rodrigo.
Abração.
muito bom
Boa noite Jhonnatans.
Muito Obrigado.
Abraços.
Muito bem explicado, parabéns…eu estava com uma pequena dúvida e já não me lembrava.forte abraço, fica com Deus.
Boa noite Wess.
Muito obrigado.
Abração. Amém, fique com Deus também.
Muito Boom.. Tirou minhas dúvidas, todas em um só código.
Parabéns pela explicação 😀
Boa tarde Noemi.
Muito Obrigado.
Abraços.
Parabéns pelo excelente trabalho. Estou fazendo um curso técnico voltado a programação e no momento estou tendo aulas de Prog Orientada a Objeto usando java, esse tutorial vai me ajudar muito vou imprimir e repassar aos meus colegas. Abraços
Boa tarde Bruno.
Muito obrigado pelo apoio.
Abraços e boa semana.
Queria aprender a criar botões ou menus para salvar,excluir,editar,imprimir e outras funções.Vejo bastante tutorial no youtube mas quero dominar o java,tenho o netbeans 8.0.2!!!!
Boa noite Sandré.
Que bacana, e os estudos como estão?
O importante é não desistir, tente fazer a integração com um banco de dados, como o MySQL, daí por trás é só fazer os comandos de insert, update, delete.
Um grande abraço.
Esse é o único material de JFrame por aqui? Se tiver mais como conseguir? Porque eu não encontro pela pesquisa.
Boa noite Crystian, tudo bem?
Realmente é a única postagem que fiz sobre JFrame.
Se tiver alguma dúvida, pode entrar em contato.
Abraços.
Muito obrigado! Ajudou-me bastante, força que continue ajudando quem puder…
Opa, obrigado pelo comentário Adelson.
Grande abraço jovem.