组织一个java GUI

时间:2013-04-06 17:15:34

标签: java swing model-view-controller user-interface windowbuilder

我是GUI的新手,我想了解如何正确构建我的程序。

我正在寻找为MVC模型创建GUI(所有控制方法都已实现)。假设我需要有3个独立的窗口,某些按钮关闭一个窗口并打开另一个窗口。

我想要有3个班级,每个窗口一个班级。每个窗口都是一个JFrame。这合理吗?然后,我们需要放入动作侦听器。那些会去哪儿?我认为应该有另一个类,主要方法。该类也可以拥有所有动作侦听器,因为这是创建控件并且能够调用控件方法的类。这是一个很好的方法吗?

无论您的建议是什么,您是否可以了解代码方面的外观?我知道如何将组件放在一个框架中,并在该框架中添加一个监听器,以便按钮执行某些操作。但我不确定多窗口会出现这种情况。任何小例子都可以。感谢。

2 个答案:

答案 0 :(得分:1)

我建议您不要使用交换JFrame,因为这对用户来说非常烦人 - 您目前使用多少个应用程序会依次抛出一堆窗口?而是考虑在需要的地方明智地使用对话框窗口,例如程序必须停止,直到用户以某种方式与其进行交互,例如登录,但主要是你交换 views (通常是JPanels)使用CardLayout。你的Swing GUI类应该适合创建JPanels,这样可以更好地实现这种灵活性。

是的,GUI代码的主要部分应该在不同的类中。

另外,我强烈建议不要使用GUI-builder实用程序来创建Swing应用程序,直到程序员对Swing基础知识有很好的处理。

有关Swing MVC的简单示例,请查看此处:using-a-jfilechooser-with-swing-gui-classes-and-listeners

答案 1 :(得分:0)

请注意,每个JFrame都有自己的任务栏条目(我认为)。如果您想避免这种情况和/或需要模态窗口,请考虑JDialog

组织在多个地方使用的操作的一种方法是创建单个哈希(作为自己的类或上下文类)来存储它们。使用Action类而不是{{1}为此 - 将它传递给ActionListener的构造函数。

您的计划可能如下:

  1. 创建ShowViewFooAction并添加到ActionHash
  2. 创建ShowViewBarAction并添加到ActionHash
  3. 创建ShowViewBazAction并添加到ActionHash
  4. 创建ViewFoo
    1. 使用ActionHash中的ShowViewBarAction创建ShowViewBarButton
    2. 使用ActionHash中的ShowViewBazAction创建ShowViewBazAction
  5. 创建ViewBar ...
  6. 创建ViewBaz ...
  7. 对于一般构造Swing代码,请查看JGoodies Binding。他们在1.5.0版本中有教程/示例代码(它虽旧但仍然是一个很好的例子)。