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.