Ajuda com swing e ActionListener

1 resposta
D

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

1 Resposta

D

up

Criado 22 de abril de 2008
Ultima resposta 26 de abr. de 2008
Respostas 1
Participantes 1