ActionListeners:对于 GUI 中的每个按钮,一个单独的侦听器还是一个用于所有按钮的侦听器?

ActionListeners: for each button in GUI a seperate listener or one listener for all buttons?

所以我想知道什么更好看 solution/what 在决定​​制作多个侦听器(1 个按钮的 1 个侦听器)或仅 1 个 ActionListener 用于我的 GUI 中的所有按钮(大约 10 个按钮),并通过 actionevent.getSource() == buttonname.

获取有关按下哪个按钮的信息

您认为哪种风格比较好?为几个 ActionListeners 创建这么多 类 有什么缺点吗?还是根本不重要?

顺便说一句,在我的代码中,我试图坚持模型-视图-控制器组织。

我更喜欢使用不同的 ActionListener 类,但根据我的经验,按功能职责对它们进行分组是一个很好的做法。

我还建议您依赖 ActionEvent#getActionCommand() 而不是 ActionEvent#getSource(),因为您可以处理来自不同 UI 组件的等效操作。

JButton button = new JButton("Button");
button.addActionListener(new ActionListener()
{
  public void actionPerformed(ActionEvent e)
  {
   //do your work here.
  }
});

这是每个按钮的方法。

具有多个 if else 或 switch 语句的长 ActionListener 接口对象既笨拙又难以维护。 此外,在每次按下按钮时,程序都必须进行多次匹配才能知道按下了哪个按钮。那是很贵的。

所以,一个 Button ---> 一个 ActionListener 是更好的方法。

我更喜欢使用 lambda,每个按钮一个,例如:

JButton button = new JButton("Button");
button.addActionListener(e -> //do your work here);