java - Swing 桌面应用程序 - 如何组织我的代码

标签 java swing frameworks

我们将在下一个项目中使用 Swing,这将是一个轻量级桌面应用程序。

我一直在阅读 Oracle 网站上的 Swing 教程并开始掌握它。

有人告诉我,我需要在一个 JFrame 中工作并切换 JPanels,而不是切换 JFrame

我的问题如下。

我可以在设计模式(所见即所得编辑器)中创建 JPanel 设计(或其模板)并调用 jframe.setContentPane(nameOfJPanel) 还是在代码中以编程方式进行?

其次,我如何构建我的代码...如果我动态添加新的 JPanel 并将它们的事件绑定(bind)到事件处理程序...我所有的逻辑和代码都将在一个具有数十种方法的巨大类中。我只是不知道如何继续,而且我在互联网上找不到包含多个(比方说超过 6 个)面板的示例。

最佳答案

是否为所见即所得

即使在最好的情况下,这也是一个有争议的问题。

我鼓励我所有的初级开发人员从手工编写 UI 开始,因为这会教会他们有关如何使用布局管理器以及如何处理复合布局的重要基础知识。

这往往需要更长的时间,因为您需要在每次更改时验证布局。

我个人使用 Netbeans 中的表单编辑器来完成我的大部分常规工作,但会手动调整 UI

结构

考虑责任边界、重用和减少策略。

您不想要的是一个无所不能的大型大师类。将很难维护和更新(我每天都生活在这种恐怖之中)。

相反,确定不同的责任区域并使用 getter 和 setter 或模型在应用程序中移动数据。代码解耦越多,更新和修改就越容易。

尽可能识别类似的工作并将其建模为接口(interface)和抽象类。基本上,您从哪里开始考虑应对代码可能是您的设计偏离的一个很好的迹象,您应该考虑实现抽象类来覆盖重叠部分。

利用 Action API 复制常用概念(复制和粘贴就是一个例子。您可能需要菜单项、可能的工具栏项甚至弹出项,这些都可以是由相同的 Action 类处理。

将数据与 View 分开。正如我之前所说,利用模型。数据不应该关心它是如何收集或修改的,只要它可以。同样, View 不应该关心数据是如何管理的,只关心它是什么。

如果可能,定义应用程序不同区域之间的接口(interface)。通过这种方式,您可以进一步解耦应用程序,并且任何部分都不会依赖于任何一种实现(你好,我的世界:P)

不要试图简单地挖掘组件层次结构来访问该字段,如果您需要更改代码,那将是一场噩梦!!

关于java - Swing 桌面应用程序 - 如何组织我的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951366/

相关文章:

java - 扩展对象与实现接口(interface)

java - 在 JFrame 中的 JPanel 上绘图

java - 带有 WindowListener 的 JDialog - 未触发 windowClosing

php - 登录页面在 codeigniter 中不起作用

php - 如何在 Silex PHP Framework 项目中设置 Controller ?

java - Jersey 未验证实体

java - 字符串文字表达式应该在等号比较的左边

Java 数组/列表索引大小

java - JTable 中的 JComboBox 不显示选择

主要提供 document/onready 功能的 Javascript 框架