请帮助我理解在以下两种方法中将操作侦听器添加到JComponent之间的区别。
第一种方法:将actionListener实现到我的类并添加公共actionPerform方法,该方法根据事件选择选择
class Test implements ActionListener
{
JButton jbutton = null;
public Test(){
jbutton = new JButton();
jbutton.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
//Perform operation here;
}
}
第二种方法:为单个JComponent定义操作侦听器。
JButton jbutton = new JButton();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//Perform operation here
}
});
这两种方法之间有什么区别,哪一种方法更清洁和可维护,是否涉及任何效率效益?
我会选择第一种方法,如果:
>
该操作通过不同的事件触发。例如,您有一个将GUI的语言从英语更改为阿拉伯语的操作(您需要重新排列组件以从右到左排列),并且可以通过一些键绑定(如(Alt R
)和JMenuItem以及一些按钮触发该操作。
几个操作具有相同的基本代码。例如,一个计算器应用程序,其中每个数学操作按钮都会触发相同的操作,并且根据action命令,您可以从actionPerformd()
中确定操作。它们共享GUI更新。
我会选择第二种方法,如果:
我不会做的是类似这样的事情:
public class MainFrame extends JFrame implements ActionListener
但我会写:
public class CustomListener implements ActionListener
另见: