2013-01-06 58 views
2

按照惯例,用户界面的ActionListener应该放在哪里?我有几个选择,但没有一个看起来很正确。Java swing - ActionListener应该去哪里?

简写:

  • GUI - 主类,它包含所有的JPanels /显示对象
  • 逻辑 - 主类,来处理应用程序逻辑

  1. 我可以在 - 在GUI中声明一个新的ActionListener,存储它,然后将它的指针传递到需要的地方。
  2. 我可以让GUI本身实现ActionListener并将自己的引用传递到需要的地方。
  3. 我可以在主逻辑中声明一个新的ActionListener(这是有道理的,因为按钮所做的操作是不应该在GUI中的逻辑),然后将它传递给GUI,然后将它传递到它的位置需要。
  4. 我可以在一个全新的文件GUIListener.java中写入逻辑,并在需要/传递它的地方声明GUIListener。
  5. 其他一些方法,我敢肯定有吨。
+5

不要做(3),保持UI和交互的东西摆脱商业逻辑。假设您稍后想要拥有一个Web应用程序,它可以对当前的应用程序执行相同的数据操作 - 如果您的逻辑代码与ActionListener混杂在一起,则不能重复使用它。 – us2012

+5

很多内容都会归结为您想要实现的内容,但您可能想了解一下[如何使用操作](http://docs.oracle.com/javase/tutorial/uiswing/misc/action.html )。 – MadProgrammer

+2

查看'javax.swing.text.DefaultEditorKit'&'javax.swing.text.StyledEditorKit'作为可重用'Action'类的例子。 – trashgod

回答

2

这基本上提出了一个问题分离的问题。 我认为你应该将GUI,Controller和Model(bean)对象保存在不同的文件中。控制器促进与应用程序相关的所有处理。