Criando uma classe para responder aos eventos

Oi Pessoal…

Sempre que eu preciso criar um evento para um botão, eu faço o seguinte:

Botao1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// Tudo o que eu quero que o botao1 faça…
}
}
:
Botao2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// Tudo o que eu quero que o botão 2 faça…
}
}
:

Beleza… funciona que é uma maravilha… só que eu acho meio burro demais… ter que fazer um para cada botão…

Aí eu fiz o seguinte: Criei uma classe :

class Resposta implements ActionListener{
public void actionPerformed(ActionEvent event){
if(event.getSource()==Botao1){
// Coisas do botao 1
}
else if(event.getSource()==Botao2){
// Coisas do botao2
}
}
}

E aí na implementação do programa eu faço…

Resposta Orelha = new Resposta();
:
Botao1.addActionListener(Orelha);
Botao2.addActionListener(Orelha);
:

Só que esse negócio não funciona… Meu compilador não compila… será que alguém podia me ajudar? Acho que deve ser alguma coisa simples…

Boa tarde!

Bom, tô começando nessa agora, mas essa eu posso te responder…
Você pode declarar uma inner class (classe interna), que é uma classe que fica dentro da outra, desse modo :

private class ButtonOkEvent implements ActionListener {
	public void actionPerformed(ActionEvent event) {
		if(event.getSource() == X)
                                   ....
                }
}

aí vc cria o evento dessa forma :

Botao1.addActionListener(new ButtonOkEvent());

Mas não se esqueça de declarar a classe interna dentro da classe que vc vai manipular os eventos…

Espero ter ajudado…
T+!

Chico

Só li a tua resposta hoje, Chico…
Já tinha resolvido… já tinha feito como vc falou, só que o cavalo aqui colocou um colchete D+ no lugar errado. Aí a definição da classe ficou dentro da inicialização do objeto principal… é a idade, bicho, a vista escurece, a junta endurece, a mulher oferece e o cara pensa: “ah, se eu pudesse…”

Valu cara… :slight_smile: