带有多个actionlistener的多个按钮

时间:2015-05-13 11:23:05

标签: java swing model-view-controller actionlistener

我正在做一个小型Java项目并使用MVC图形用户界面进行编写。 在这个项目中,我有几十个具有不同功能的按钮。

由于我使用MVC编写,我不会使用匿名类监听器。我将在Controller类中分离actionlistener类。因为我有几十个按钮,这意味着我需要为它创建几十个actionListioner类?

如果有任何方法可以简化代码?

2 个答案:

答案 0 :(得分:1)

MVC是一种易于跟踪项目的结构。我认为这应该不是问题。请研究有很多关于它的信息。您应该使用e.getSource()。试试这个:

JButton b1;
JButton b2;

public void actionPerformed(ActionEvent e) {
    if (e.getSource() == b1) {
    // Do something...
    }
    if (e.getSource() == b2) {
    // Do something else...
    }
}

请看这些:

One action listener, two JButtons

How to add action listener that listens to multiple buttons

http://www.java2s.com/Tutorial/Java/0260__Swing-Event/Useoneinnerclasstohandleeventsfromtwobuttons.htm

答案 1 :(得分:0)

这对人们来说总是很困难。它不应该让控制器担心实际的按钮,而应该担心视图允许做什么(即它可以执行的操作),这可能会更新模型。

因此,您的视图实际上会在内部处理按钮事件,但是,它不会更改状态本身,而是通知控制器特定状态已更改或已执行操作。

此通信将通过一系列接口合同进行管理。这意味着特定控制器期望控制特定类型的视图,但是既不关心实际实现,只要两者之间的合同得以维持

考虑到这一点,它意味着您的视图可以做任何喜欢的事情并生成"事件"无论如何它只是喜欢,只要合同得到维护,并且你没有将你的部分观点暴露给程序中没有理由引用它的其他部分