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

时间:2015-07-21 08:47:21

标签: java class button coding-style actionlistener

所以我想知道什么是更好看的解决方案/有什么区别以及在决定制作多个听众(1个听众为1个按钮)或仅为1个ActionListener时需要考虑的事项我的GUI中的所有按钮(大约10个按钮),并通过actionevent.getSource() == buttonname获取有关按下哪个按钮的信息。

您认为哪种风格更好?为多个ActionListeners创建如此多的类是否有缺点?或者根本不重要?

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

3 个答案:

答案 0 :(得分:1)

我更喜欢拥有不同的ActionListener类,但根据我的经验将它们按功能责任分组是一种很好的做法。

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

答案 1 :(得分:0)

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

这是每个按钮的方法。

具有多个if else或switch语句的长ActionListener接口对象既笨拙又难以维护。 此外,在按下每个按钮时,程序必须经过多次匹配才能知道按下了什么按钮。这是非常昂贵的。

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

答案 2 :(得分:0)

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

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