代码有效,但我想知道当按钮在不同文件上执行相同任务时,这是否是添加actionListener的最佳方式/最佳推荐方式。我已经阅读了制作类实现ActionLister接口与为每个按钮添加匿名actionListener类之间的争论。这两种方法似乎都不适合这种情况。这是我的代码,其中遗漏了无关的内容:
public class ABC {
public ABC() {
// constructor here
}
private JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu1 = new JMenu("File");
menuBar.add(menu1);
JRadioButtonMenuItem P1 = new JRadioButtonMenuItem();
JRadioButtonMenuItem P2 = new JRadioButtonMenuItem();
P1.addActionListener(fileSelectionListener);
P2.addActionListener(fileSelectionListener);
P1.setText("P1");
P2.setText("P2");
menu1.add(P1);
menu1.add(P2);
return menuBar;
}
ActionListener fileSelectionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JRadioButtonMenuItem source = (JRadioButtonMenuItem) e.getSource();
String a = source.getText();
loadFile(a);
}
};
private void loadFile(String a) {
// implementation of method
}
// adding things to the frame
// main method
}
答案 0 :(得分:0)
最好的方法?可能不是大多数人的标准。在我眼里?是的,这可能是最好的方式。您创建了一个ActionListener的可重用实例,因为您多次使用它。对我来说,这与使类扩展ActionListener是一回事。
大多数建议将我们带入辩论的深度,所以我可能不会偏离那里太远;)
你的方法肯定比为每个按钮添加一个匿名监听器更快。