假设我有一个名为button1的按钮。如果我想为按钮创建一个actionListener,我应该选择哪种方法:(在第二种方法中,你必须扩展actionListener接口)
// Imports
public class Test{
JButton test = new JButton();
Test(){
// Pretend there is an adapter
test.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
...
}
});
...
}
或
// Imports
public class Test2 extends ActionListener{
JButton button2 = new JButton();
Test2(){
button2.addActionListener(this);
}
// Pretend there is an adapter
public void actionPerformed(ActionEvent e){
Object src = e.getSource();
if(src == button2){
...
}else{
...
}
}
答案 0 :(得分:3)
去寻找第一个。你不应该让你的GUI类也实现你的监听器,因为这要求GUI或视图类做太多。通过分离出您的侦听器代码,即使它位于匿名侦听器类中,如果您希望将侦听器代码与视图代码完全分离,也可以更轻松地等待。
答案 1 :(得分:3)
在第二种情况下,您必须实现 ActionListener
接口。除此之外,答案是“它取决于”。如果为多个图形组件重用相同的动作侦听器是有意义的,那么使用第二个版本。如果处理事件是单个组件的一次性事件,则使用第一个版本。
答案 2 :(得分:1)
如果每个监听器都是唯一的,那么您可能希望使用匿名类(第一个示例)。如果您不得不一遍又一遍地重写相同的代码,那么在命名类中实现它(如在第二个示例中)将是更可取的,因此您可以重用相同的侦听器。
但是,您可能会发现将侦听器实现放入不同的类(甚至是实现ActionListener的内部类),而不是扩展ActionListener(如第二个示例中所示),可以为代码提供更好的逻辑逻辑分离。 / p>