我应该为多个按钮使用单个ActionListener的不同实例吗?

时间:2015-12-30 17:39:08

标签: java swing jbutton actionlistener

我有一个用于多个按钮的ActionListener:

private class MyActionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent event) {
            if (event.getSource().equals(button1)) {
                // do something
            } else if (event.getSource().equals(button2)) {
                // do something else
            }
        }
}

以下哪一项是将ActionListener添加到这些按钮的更好方法?为什么?

1:

button1.addActionListener(new MyActionListener());
button2.addActionListener(new MyActionListener());

2:

MyActionListener mal = new MyActionListener();

button1.addActionListener(mal);
button2.addActionListener(mal);

我选择了第二个选项,但不确定它是否正确。

1 个答案:

答案 0 :(得分:4)

这个问题请求意见,可能会被关闭,因此,我作为社区维基回答,但我认为最好的答案是"它取决于"。

我所做的就是如果所有的监听器完全相同,并且你没有向每个构造函数传递任何不同的东西,那么只需让每个按钮共享同一个监听器。如果我需要将唯一信息传递给侦听器,那么我会使用单独的侦听器,但实际上它们都可以工作,并且两者都不会在程序操作或响应性方面造成明显差异。