如何组织 Swing GUI 应用程序?

2022-08-31 19:59:20

我已经使用Swing编写了一些GUI,并且我知道MVC,但我从来没有找到一种好方法来以某种方式真正组织我的代码。我正在寻找的是类似于maven为每个新项目引入的文件夹结构的东西。另一个例子是导轨,其中MVC自动通过文件夹结构引入。Swing也有类似的东西吗?

如果能看到一本描述更大 Swing 应用程序开发的书,那也很不错。我所发现的都是关于设计指南的书籍,其中设计指的是应用程序的外观。其他Swing书籍(如O'Reilly)详细描述了所有摇摆组件,但关于大局的任何信息在哪里?

有没有一个很好的swing gui的例子,你会说“这就是你为swing组织代码/文件夹/包的方式!”?

编辑:我发现以下网站 http://www.ibm.com/developerworks/java/tutorials/j-springswing/section7.html 它描述了在创建GUI时弹簧的用法。这是一个相当古老的例子,它没有回答我的问题,但它是朝着正确方向迈出的一步。它还提到了Spring RCP,但我不确定它是否可能是解决方案。

编辑2:我仍然没有找到更好的答案。有谁知道一个结构理想的Swing GUI的例子,它是开源的?有没有人知道一本书,它描述了它?如果不是Swing,那么也许一般的GUI?


答案 1

虽然它是Groovy,而不是Java,但我建议你看看Griffon,这是一个“Grails for Swing”。

它对使用它构建的所有应用程序强制实施给定的结构(在目录和模式方面,特别是MVC)。

我认为它总体上可以给你一些好的想法,尽管你必须对Java进行一些小的适应。

此外,请注意,Griffon还支持Java中的应用程序构建,并且它还可能为此提供“原型”,因此您也可以检查一下。


答案 2

您可以阅读秋千架构概述。但是当我做更大的Swing应用程序时,我不会像做Web开发时那样组织它们。我只是在功能部件中组织我的 Swing 应用程序。例如,如果应用程序有四个包含表单和表格的选项卡,我将一个选项卡中的组件放在一个包中。然后,我通常会得到一些表单和表与之交互的自定义实现。模型保留数据的缓存并与数据库进行通信。AbstractTableModel

在我最新的 Swing 应用程序中,我使用 Akka actor 来简化线程。然后,我在 EDT 线程上执行了所有 Swing 组件,它们与作为自定义 Actor 的数据访问对象进行通信。然后我也有一些将数据库中的数据与Internet上的服务同步,但它们从未在EDT上运行过,它们只与DAO(我的Actor)进行通信。TimerTask


推荐