Рассмотрим JFrame с двумя кнопками:
setup 1:
один метод actionPerformed передается дочерним элементам, а способ его обработки основан на идентификаторе объекта, передающегособытие.
import javx.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
public class View extends JFrame implements ActionListener{
private JButton btn1;
private JButton btn2;
private JLabel lbl;
public View(){
btn1 = new JButton("hi");
btn2 = new JButton("bye");
setLayout(new GridBagLayout());
GridBagConstraings gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = 0;
gc.weightx = 1;
gc.weighty = 1;
add(btn1,gc);
gc.gridx = 1;
gc.gridy = 0;
gc.weightx = 1;
gc.weighty = 1;
add(btn2,gc);
btn1.addActionListener(this);
btn2.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e){
JButton src = (JButton)e.getSource();
if(src == btn1){
//do this
}else{
//do that
}
}
}
Настройка 2:
Каждому отдельному модулю передается экземпляр анонимного класса, который содержит собственную уникальную реализацию actionPerformed()
import javx.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
public class View extends JFrame{
private JButton btn1;
private JButton btn2;
private JLabel lbl;
public View(){
btn1 = new JButton("hi");
btn2 = new JButton("bye");
setLayout(new GridBagLayout());
GridBagConstraings gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = 0;
gc.weightx = 1;
gc.weighty = 1;
add(btn1,gc);
gc.gridx = 1;
gc.gridy = 0;
gc.weightx = 1;
gc.weighty = 1;
add(btn2,gc);
btn1.addActionListener(new ActionListener(){
//do this
});
btn2.addActionListener(new ActionListener(){
//do that
});
}
}
Что быбыть причиной, по которой я должен выбрать один подход вместо другого?