Criando uma classe para responder aos eventos

2 respostas
A

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…

2 Respostas

C

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

A

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:

Criado 1 de julho de 2004
Ultima resposta 5 de jul. de 2004
Respostas 2
Participantes 2