Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

JCheckBox - Como Usar Botões de Checagem (CheckBox ou Caixa de Seleção) (Tutorial de Java)

Neste Tutorial de Java sobre GUI, vamos saber o que é, para que serve e como usar o JCheckBox, um componente muitíssimo importante e usado em aplicações gráficas, que serve para 'checar' ou marcar uma opção.

Apostila de Java para download, Curso de Java, Tutorial online completo

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:
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);
  }
 }
}

Apostila de Java para download. Curso online e completo com certificado. Tutorial de Java

3 comentários:

Anônimo disse...

Aula muito boa, o melhor curso que já fiz, e o que é melhor, gratis!

Luiz disse...

Cara essa sua apostila sobre Java Swing é excelente! Parabéns!

Anônimo disse...

Parabéns pelo post, muito bom me ajudou bastante...

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java