0

我对 GUI 很陌生,我想了解如何正确构建我的程序。

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

我正在考虑开设 3 节课,每个窗口一节课。每个窗口都是一个 JFrame。这合理吗?然后,我们需要放入动作监听器。那些会去哪里?我在想应该有另外一个类,主要方法。该类还可以具有所有动作侦听器,因为该类还创建了控件并能够调用控件的方法。这是一个很好的方法吗?

无论您的建议是什么,您能否提供一个关于这在代码方面的外观的想法?我知道如何将组件放在一个框架中,并在该框架中添加一个侦听器,以便按钮执行某些操作。但我不确定这在多个窗口中会是什么样子。任何小例子都可以。谢谢。

4

2 回答 2

1

我建议您不要使用交换 JFrame,因为这对用户来说非常烦人——您目前使用多少个应用程序会依次向您抛出一堆窗口?相反,请考虑在需要时明智地使用对话窗口,例如,程序必须停止,直到用户以某种方式(例如登录)与其交互,但主要是您使用 CardLayout交换视图(通常是 JPanel)。您的 Swing GUI 类应该面向创建 JPanel,这将更好地实现这种灵活性。

是的,您的 GUI 代码的主要单独部分应该在单独的类中。

此外,我强烈建议不要使用 GUI 构建器实用程序来创建 Swing 应用程序,直到程序员对 Swing 基础知识掌握得很好。

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

于 2013-04-06T17:34:44.097 回答
0

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

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

你的程序可能是这样的:

  1. 创建 ShowViewFooAction 并添加到 ActionHash
  2. 创建 ShowViewBarAction 并添加到 ActionHash
  3. 创建 ShowViewBazAction 并添加到 ActionHash
  4. 创建 ViewFoo
    1. 使用 ActionHash 中的 ShowViewBarAction 创建 ShowViewBarButton
    2. 使用 ActionHash 中的 ShowViewBazAction 创建 ShowViewBazAction
  5. 创建 ViewBar ...
  6. 创建 ViewBaz ...

至于一般结构化 Swing 代码,请查看JGoodies Binding。他们在1.5.0版本中有教程/示例代码(它很旧但仍然是一个很好的例子)。

于 2013-04-26T23:07:13.237 回答