Boa tarde! pessoal
Meu nome é Renato estudo Java a mais ou menos um ano ultimamente venho estudando bastante sobre as API’s Swing/AWT, a minha dúvida é referente a implementação correta e ideal da inteface ActionListener e estou trabalhando com padrão MVC como podem ver abaixo fiz duas propostas de implementação.
Proposta 1:
package br.com.guj.controller;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import br.com.guj.view.PanelButton;
public class ListenerPanel implements ActionListener {
private PanelButton panel;
public ListenerPanel(PanelButton panel) {
this.setPanel(panel);
}
public PanelButton getPanel() {
return panel;
}
public void setPanel(PanelButton panel) {
this.panel = panel;
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Hello")) {
System.out.println("Hello");
} else if (e.getActionCommand().equals("Bye")) {
System.out.println("Bye");
}
}
}
A minha critica referente a implementação acima está no método actionPerformed(ActionEvent e) que por exemplo: Se for implementar um painel com vários botões terei que criar diversos ifelse deixando o código muito extenso e complexo.
Proposta 2:
package br.com.guj.controller;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import br.com.guj.view.PanelButton;
public class ListenerPanel {
private PanelButton panel;
public ListenerPanel(PanelButton panel) {
this.setPanel(panel);
}
public PanelButton getPanel() {
return panel;
}
public void setPanel(PanelButton panel) {
this.panel = panel;
}
public static class BtnHelloClick implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Hello");
}
}
public static class BtnByeClick implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Bye");
}
}
}
A minha segunda proposta acima é a utilização de Inner Class (Classes internas) para fazer os tratamentos dos eventos, só que o problema é quase o mesmo ao anterior, terei que implementar diversas Inner Class que implemente a inteface ActionListener, caso possua diversos botões.
A pergunta é: Qual é a implementação ideal para esses tipos de casos ? Existe algum padrão para esse tipo de implementação ?