Listener

4 respostas
boca

Olá pessoal! estou necessitando de um help ai!
Estou postando o código ai pra ficar mais fácil, na verdade o que eu quero saber, é como eu posso tratar os eventos de botão de uma classe em outra, pois acho que o código ficaria mais legível se eu pudesse criar todo o formulário em uma classe e trabalhar os eventos de botão em outra.
Um abraço pra todos!!!

public class Janela implements ActionListener{

protected JFrame frmJanela;
protected JButton btnTeste;

public void criaJanela(){
	
	JFrame.setDefaultLookAndFeelDecorated(true);
	frmJanela = new JFrame("janela");
	frmJanela.setSize(150,80);
	frmJanela.setLocation(280, 280);
	frmJanela.setLayout(null);
	frmJanela.setVisible(true);
	
	btnTeste = new JButton("teste");
	btnTeste.setBounds(30, 15, 80, 20);
	frmJanela.add(btnTeste);
	btnTeste.addActionListener(this);
	
	//****Sei que poderia fazer assim:*****

	btnTeste.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent evt){
			//****Faz alguma coisa aqui...****
		}
	});
	
}

//****Sei que poderia fazer assim também:****

public void actionPerformed(ActionEvent e) {
	if(e.getSource() == btnTeste){
		//****Faz alguma coisa aqui...****
	}
	
}
    
    //****Mas não sei fazer como eu gostaria...****

public static void main(String args[]){
	new Janela().criaJanela();
}

}

4 Respostas

volnei

Olá boca,

Eu não creio que essa seja realmente uma boa estratégia, os eventos fazem parte da camada de apresentação e por sua vez devem ser mantidos juntos com ela. Talvez a separação das ações é que realmente deixariam seu código mais claro.

Mas para executar seus eventos em outra classe pode criar uma classe que implemente a interface ActionListener e instanciá-la junto da sua interface adicionando-a aos seus objetos que dispararão o evento em questão. Se não entender por favor diga que eu posto um código com um exemplo.

Outra saida interessante seria estudar o MVC e como o swing o implementa seria de grande valia já que gosta de códigos organizados.

abraços.

leandrokjava

concordo com o volnei.
procure usar sempre que puder uma otima orientação a objetos.

boca

Obrigado Volnei, realmente vou seguir seu conselho e tentar separar melhor as ações. Já desconfiava que tratar eventos em classes separadas não seria tão bom assim, pelo simples fato de não ver ninguém fazer.
Muito obrigado pelo esclarecimento pessoal!

leandrokjava

sempre que precisar é só postar as duvidas…
e tb sempre que tiveres como esclarecer as duvidas dos outros, esclareça…

estamos sempre aqui para isso.
por isso que somos o GUJ. \o/ eheheh

T+
abração

Criado 17 de janeiro de 2008
Ultima resposta 20 de jan. de 2008
Respostas 4
Participantes 3