JCheckBox em Java - O Que É e Para Que Serve
O JCheckBox é mais um elemento que o Java nos oferece para usarmos em aplicações gráficas (GUI), e nada mais é que aquela caixinha que vemos em sites e aplicativos, para "marcarmos" ou "checarmos" algo.
Sem dúvidas você já usou ela pra marcar a opção "Li e Aceito os Termos" (embora nunca tenha lido, né? :), para poder se cadastrar em algum serviço de email, rede social ou para aceitar a instalação de algum software.
Ela é dita de duplo estado: marcada ou não marcada.
A lógica dela, em Java, é que se ela estiver marcada, é como se retornasse o valor lógico true, e se não estiver marcada, retorna um false.
O JCheckBox, é uma espécie de botão (como JButton), porém é um botão que mantém seu estado.
Ou seja, uma vez que você clica nesse elemento, uma mudança ocorre nele e esta mudança permanece (ele fica selecionado ou não, de maneira permanente).
Diferente dos JButtons, que você clica, algo muda temporariamente e ele volta ao seu estado padrão (não pressionado).
Tutorial de JCheckBox - Como Usar Caixas De Seleção em Java
Sem mais delongas, vamos ver como inserir esses elementos em nossos aplicativos Java.
Inicialmente, vamos fazer um aplicativo que exiba a figura inicial deste tutorial: quatro JCheckBox, um com a opção "Java", outro "PHP", outro "C#" e uma caixa de seleção escrito "C".
Inicialmente, crie seu projeto Java.
Vamos criar uma classe chamada MyCheckBox.java, que vai conter o código Java necessário para a exibição dessas caixas de seleção. Esta classe deve estender a JFrame
Agora, importe a classe JCheckBox, do pacote javax.swing, a JFrame e a do layout que vamos usar:
import java.awt.FlowLayout; import javax.swing.JCheckBox; import javax.swing.JFrame;
Como queremos quatro caixas de seleção, vamos declarar quatro objetos da classe JCheckBox, e chamá-los de "java", "php", "csharp" e "c":
private JCheckBox java, php, csharp, c;
Dentro do construtor padrão, vamos definir o título de nosso aplicativo: "Que Linguagens Deseja Aprender?", definimos o que o programa deve fazer quando clicarem em fechar, dar um tamanho para ele (setSize) e vamos usar o FlowLayout ( setLayout( new FlowLayout() );).
Agora vamos inicializar nossas caixas de seleção JCheckBox, apenas passando os nomes que queremos que apareça nelas:
(o mesmo para os outros JCheckBox), e em seguida adicionamos cada um deles no layout:
add(java);
O código desta classe fica:
MyCheckBox.java
import java.awt.FlowLayout; import javax.swing.JCheckBox; import javax.swing.JFrame; public class MyCheckBox extends JFrame { private JCheckBox java, php, csharp, c; public MyCheckBox(){ super("Que Linguagens Deseja Aprender ?"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400,100); setLayout( new FlowLayout() ); //Criando os JCheckBox java = new JCheckBox("Java"); php = new JCheckBox("PHP"); csharp = new JCheckBox("C#"); c = new JCheckBox("C"); //Adicionando os JCheckBox no Layout add(java); add(php); add(csharp); add(c); setVisible(true); } }
Criando uma classe Main que tenha o método main para criar um objeto da classe MyCheckBox:
Main.java
public class Main { public static void main(String[] args) { MyCheckBox myCheckBox = new MyCheckBox(); } }
Rodando nosso projeto, o resultado é a figura lá de cima, deste tutorial.
Os JCheckBox aparecem, você pode clicar, selecionar e deselecionar.
Eventos em JCheckBox - Handler e Listener
Ok, os JCheckBox já apareceram e estão funcionando.
Mas o que eles fazem quando são clicados? Ué, faz o que você os programou para fazerem (no caso, nada).
Precisamos tratar os eventos e ações, e isso é possível em JCheckBox através da classe ItemListener e seu método itemStateChanged.
Diferente de antes, vamos usar Listener e Handler próprios par ao JCheckBox.
Importe:
Para fazer o tratamento de eventos, vamos criar uma classe interna chamada CheckBoxHandler, e ela deve implementar a ItemListener, e dentro uma string "texto" que vai servir para armazenar os itens selecionados.
Essa classe que implementa a ItemListener deve implementar o método "public void itemStateChanged( ItemEvent event ) { } ".
Dentro deste método itemStateChanged é que está o segredo de nosso aplicativo, pois iremos usar testes condicionais IF para testar se cada caixa de checagem está checada ou não.
Para saber isso (se a checkbox está marcada ou não), usaremos o método isSelected() da classe JCheckBox, que retorna true se a caixa estiver marcada e false se não estiver.
E caso esteja selecionado o JCheckBox, vamos adicionar o nome da linguagem de programação selecionada na string "texto", que ao final será exibida no JLabel.
Agora, vamos criar um objeto da classe CheckBoxHandler, o "tratador" e adicionar esse handler em cada um dos JCheckBox, através do método addItemListener.
Vejam como ficou o código da classe MyCheckBox.java:
Mas o que eles fazem quando são clicados? Ué, faz o que você os programou para fazerem (no caso, nada).
Precisamos tratar os eventos e ações, e isso é possível em JCheckBox através da classe ItemListener e seu método itemStateChanged.
Diferente de antes, vamos usar Listener e Handler próprios par ao JCheckBox.
Importe:
import java.awt.event.ItemEvent; import java.awt.event.ItemListener;Agora vamos criar um JLabel, o "linguagens" que vai mostrar uma String com as linguagens que o usuário selecionar nas caixas de seleção.
Para fazer o tratamento de eventos, vamos criar uma classe interna chamada CheckBoxHandler, e ela deve implementar a ItemListener, e dentro uma string "texto" que vai servir para armazenar os itens selecionados.
Essa classe que implementa a ItemListener deve implementar o método "public void itemStateChanged( ItemEvent event ) { } ".
Dentro deste método itemStateChanged é que está o segredo de nosso aplicativo, pois iremos usar testes condicionais IF para testar se cada caixa de checagem está checada ou não.
Para saber isso (se a checkbox está marcada ou não), usaremos o método isSelected() da classe JCheckBox, que retorna true se a caixa estiver marcada e false se não estiver.
E caso esteja selecionado o JCheckBox, vamos adicionar o nome da linguagem de programação selecionada na string "texto", que ao final será exibida no JLabel.
Agora, vamos criar um objeto da classe CheckBoxHandler, o "tratador" e adicionar esse handler em cada um dos JCheckBox, através do método addItemListener.
Vejam como ficou o código da classe MyCheckBox.java:
MyCheckBox.java
import java.awt.FlowLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; public class MyCheckBox extends JFrame { private JCheckBox java, php, csharp, c; private JLabel linguagens = new JLabel("Linguagens selecionadas: "); public MyCheckBox(){ super("Que Linguagens Deseja Aprender ?"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400,100); setLayout( new FlowLayout() ); //Criando os JCheckBox java = new JCheckBox("Java"); php = new JCheckBox("PHP"); csharp = new JCheckBox("C#"); c = new JCheckBox("C"); //Criando e adicionando o handler CheckBoxHandler tratador = new CheckBoxHandler(); java.addItemListener(tratador); php.addItemListener(tratador); csharp.addItemListener(tratador); c.addItemListener(tratador); //Adicionando os JCheckBox no Layout add(java); add(php); add(csharp); add(c); add(linguagens); setVisible(true); } private class CheckBoxHandler implements ItemListener{ private String texto = ""; @Override public void itemStateChanged(ItemEvent evento) { texto = ""; if(java.isSelected()) texto += "Java "; if(php.isSelected()) texto += "PHP "; if(csharp.isSelected()) texto += "C# "; if(c.isSelected()) texto += "C "; linguagens.setText("Linguagens selecionadas: "+texto); } } }
3 comentários:
Aula muito boa, o melhor curso que já fiz, e o que é melhor, gratis!
Cara essa sua apostila sobre Java Swing é excelente! Parabéns!
Parabéns pelo post, muito bom me ajudou bastante...
Postar um comentário