提问者:小点点

使用通用或单独的action完美方法有什么区别


请帮助我理解在以下两种方法中将操作侦听器添加到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    
    }
});

这两种方法之间有什么区别,哪一种方法更清洁和可维护,是否涉及任何效率效益?


共1个答案

匿名用户

我会选择第一种方法,如果:

>

  • 该操作通过不同的事件触发。例如,您有一个将GUI的语言从英语更改为阿拉伯语的操作(您需要重新排列组件以从右到左排列),并且可以通过一些键绑定(如(Alt R)和JMenuItem以及一些按钮触发该操作。

    几个操作具有相同的基本代码。例如,一个计算器应用程序,其中每个数学操作按钮都会触发相同的操作,并且根据action命令,您可以从actionPerformd()中确定操作。它们共享GUI更新。

    我会选择第二种方法,如果:

    • 该操作只与一个事件相关联,您想即时编写它。

    我不会做的是类似这样的事情:

    public class MainFrame extends JFrame implements ActionListener
    

    但我会写:

    public class CustomListener implements ActionListener
    

    另见:

    • 实现ActionListener的最佳实践
    • gui和actionlistener的最佳实践
    • ActionListener最佳实践
    • 嵌套类与实现ActionListener
    • 在Java中组织GUI和ActionListener的代码
    • 在内部类中定义按钮动作Vs在摇摆中定义公共类中的按钮动作
    • 什么更好用:动作vs动作监听器?