请帮助我理解在以下两种方法中将动作侦听器添加到JComponent之间的区别。
第一种方法:将actionListener实现到我的类并添加公共actionPerformed方法,根据事件选择选择
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
}
});
这两种方法有什么区别,哪种方法更清洁,更易于维护?如果涉及到任何效率方面的好处?
答案 0 :(得分:3)
如果符合以下条件,我会选择第一种方法:
该动作是通过不同的事件触发的。例如,您有一个操作,可以将GUI的语言从英语更改为阿拉伯语(您需要重新排列组件以从右到左排列),并且可以通过某些key bindings类似( Alt + R
)并通过JMenuItem,也许通过一些按钮。
多个操作具有相同的基本代码。例如,计算器应用程序,其中每个数学运算按钮将触发相同的操作,并根据操作命令,您可以从actionPerformd()
内部确定操作。他们共享GUI更新。
如果出现以下情况,我会选择第二种方法:
我不会做的是类似的事情:
public class MainFrame extends JFrame implements ActionListener
但我会写:
public class CustomListener implements ActionListener
另见: