Galera, tenho um exercício aqui que é o seguinte, tenho um formulário com alguns checkbox e um botão que quando clicado exibe os caras selecionados, e um último checkbox com a opção de selecionar todos, é bem simples, mas sou iniciante em Java.
O fato é que até agora, quando clico em todos, ele seleciona e já dispara o evento do botão, que mostra os caras selecionados na tela. E isso só acontece na primeira vez que executo o programa, nas demais, ele seleciona apenas o checkbox todos e ainda assim exibe todos os caras.
Obviamente eu entendi o porque do problema, o que eu não entendi muito bem é esse evento actionListener e também actionPerformed, como usar mais de um no mesmo programa, aonde colocar, se alguém pudesse me auxiliar com esse exercício e também uma rápida explicação, agradeço desde já.
Segue abaixo o código, um abraço.
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class Tela extends JFrame implements ActionListener {
JCheckBox chkProgramacao, chkBancoDados, chkAnalise, chkTodos;
JButton btn;
String resp = "";
boolean nada;
boolean b = true;
public Tela() {
chkProgramacao = new JCheckBox("Programação");
chkBancoDados = new JCheckBox("Banco de Dados");
chkAnalise = new JCheckBox("Análise de Sistemas");
chkTodos = new JCheckBox("Todos");
btn = new JButton("krikaki");
btn.addActionListener(this);
chkTodos.addActionListener(this);
JPanel p = new JPanel(new GridLayout(4,1));
TitledBorder titulo = BorderFactory.createTitledBorder("Assunto");
p.setBorder(titulo);
p.add(chkProgramacao);
p.add(chkBancoDados);
p.add(chkAnalise);
p.add(chkTodos);
add(p, "Center");
add(btn, "South");
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent evento) {
if (evento.getSource() == btn)
{
nada = true;
resp="";
if (chkProgramacao.isSelected()) {
resp = chkProgramacao.getText();
nada = false;
}
if (chkBancoDados.isSelected()) {
resp += "\n" + chkBancoDados.getText();
nada = false;
}
if (chkAnalise.isSelected()) {
resp += "\n" + chkAnalise.getText();
nada = false;
}
}
if (evento.getSource()== chkTodos)
{
Todos();
}
if (nada==true)
{
JOptionPane.showMessageDialog(null, "Nenhum Assunto");
}
else
{
JOptionPane.showMessageDialog(null, resp);
}
}
public void Todos(){
nada = true;
resp="";
if (chkTodos.isSelected()){
chkProgramacao.setSelected(b);
chkBancoDados.setSelected(b);
chkAnalise.setSelected(b);
resp += "\n" + chkProgramacao.getText() + "\n" + chkBancoDados.getText() + "\n" + chkAnalise.getText();
nada = false;
}
else
{
b = false;
chkProgramacao.setSelected(b);
chkBancoDados.setSelected(b);
chkAnalise.setSelected(b);
nada = true;
}
}
public static void main(String[] args) {
new Tela();
}
}