哪种方式实现ActionListener更正确?
是否有主要的性能差异?
为该类实现一个ActionListener:
public class MainFrame implements ActionListener {
JButton exampleButton1 = new JButton();
JButton exampleButton2 = new JButton();
JButton exampleButton3 = new JButton();
public MainFrame(){
exampleButton1.addActionListener(this);
exampleButton2.addActionListener(this);
exampleButton3.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src.equals(exampleButton1)){
//Do something
}else if(src.equals(exampleButton2)){
//Do something
}else if(src.equals(exampleButton3)){
//Do something
}
}
}
与向每个JButton添加ActionListeners相对:
public class MainFrame {
JButton exampleButton1 = new JButton();
JButton exampleButton2 = new JButton();
JButton exampleButton3 = new JButton();
public MainFrame(){
exampleButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Do something
}
});
exampleButton2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Do something
}
});
exampleButton3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Do something
}
});
}
}
或者甚至使用Lambdas ..?
最佳答案
我希望使用单个Action
作为按钮的侦听器。 Action
是稍微高级的侦听器,可以在可以使用ActionListener的任何地方使用。
它提供了其他功能,例如:
多个组件(例如JButton,JMenuItem)可以使用同一Action
您可以禁用操作,这将禁用所有使用该操作的组件
它允许为您的组件分配助记符和加速器
有关此概念的更多信息和示例,请参见How to Use Actions上的Swing教程。