Dúvida sobre actionlistener [RESOLVIDO]

2 respostas
airmigjr

Pessoal,
estou com uma dúvida com relação ao uso do ActionListener.
Meu professor, num dado momento, quando criou um simples Frame, adicionou um botão que tinha uma determinada função. E para isso, ele escreveu o seguinte código, sendo que o botão estava no próprio Frame:

btn = new JButton("Click Me!");
		
		btn.addActionListener(new ActionListener(){

			
			public void actionPerformed(ActionEvent arg0) {
				textArea.append("Hello\n");
				
			}
			
		});

E quando o exemplo foi ficando mais elaborado, ele adicionou um Toolbar, e colocou 2 botões dentro do Toolbar, porém, ele utilizou o ActionListener de maneira diferente, que eu não entendo o porquê. Poderia alguém me explicar por favor?

Obrigado.

Segue o 2º Código:

public Toolbar(){
		helloButton = new JButton("Hello");
		goodbyeButton = new JButton("GoodBye");
		setLayout (new FlowLayout(FlowLayout.LEFT));
		
		add(helloButton);
		add(goodbyeButton);
		
		helloButton.addActionListener(this);
		goodbyeButton.addActionListener(this);
		
	}
	public void setTextPanel(TextPanel textPanel){
		this.textPanel = textPanel;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		
		JButton clicked= (JButton)e.getSource();
		
		if (clicked == helloButton){
			textPanel.appendText("Hello\n");
		}else if(clicked == goodbyeButton){
			textPanel.appendText("GoodBye\n");
		}
	}
}

2 Respostas

M

O que acontece em qualquer um dos exemplos é que o addActionListener(ActionListener action) exige uma implementação concreta de ActionListener para saber o que fazer quando um evento for disparado.

No primeiro exemplo uma implementação do método actionPerformed(ActionEvent event) da própria interface ActionListener é passada como parâmetro para o método addActionListener(ActionListener listener) do botão.

Já no segundo exemplo, o método actionPerformed(ActionEvent event) é implementado na própria classe, pois a mesma implementa ActionListener, e dessa forma, a própria classe funciona como listener para os botões e assim, como no exemplo, é possível definir as ações para cada um dos botões dentro de um único método.

Espero ter ajudado.

Té mais.

airmigjr

Ajudo muito M@C!!! Muito obrigado!!! Eu não notei que a classe já implementava o ActionListener!!! E vc já sabia mesmo sem eu ter copiado essa parte do código. Obrigado!!!

Criado 15 de janeiro de 2013
Ultima resposta 15 de jan. de 2013
Respostas 2
Participantes 2