java - 手动或通过 GUI Builder 设计 GUI

标签 java swing netbeans awt gui-builder

我知道有与我的问题类似的问题。但是有几个问题我想特别问一下,因为我们正计划手动重新设计我们的 GUI。我们正在设计的系统将是一个招生系统,将被学校使用。

当我们设计它并向类中添加许多组件时,我们遇到了低内存编译错误,这让我认为继续通过 GUI Builder 设计它可能会导致长期问题。

我真的需要专家的意见和建议,因为我们只是学生。

这是我们当前 GUI 设计的屏幕截图及其类的屏幕截图。

enter image description here

将所有面板和其他组件放在类 Enrollment_System.java 中实际上是一个错误,我怀疑它已经超出了项目的 VM 选项的 Xms 限制。

我想也许我们可以将框架和面板分开到不同的文件夹/包中,以避免超出每个类的内存限制。那会是最好的做法吗?如果像下面的屏幕截图那样将组件放在单独的文件夹中,我们应该使用多少帧。

enter image description here

我想我的主要问题是,如何正确管理面板和组件,以便我们可以轻松地在注册系统中实例化对象和执行系统任务。

如果有任何建议或帮助,我将不胜感激。

最佳答案

在使用表单编辑器和手动编写 UI 代码之间的选择可以非常基于意见。

当我第一次开始使用 Swing 时,表单编辑器非常糟糕。所以我学会了手工编写 UI 代码,这也有助于在我工作的第一个项目中使用动态加载机制,这意味着我们不能在我们的代码中使用顶级容器,如 JFrame , 所以一切都必须从 JPanel 开始。

I thought maybe we could separate frames and panels to different folders/packages to avoid exceeding the limit of memory per class. Would that be the best thing to do? How many frames should we use if components will be put in separate folders like the screenshot below.

这是一个好的开始,您还应该限制向用户抛出的帧/窗口的数量,他们在生活中有足够多的分心需要处理,而无需向他们抛出更多。相反,以使用尽可能少的窗口的方式管理您的 View ,例如使用 JTabbedPaneCardLayout(以及适当的对话框)

通过将您的 UI 分成“隔间”,您可以减少耦合并提高可重用性,例如,如果您有一个显示患者详细信息的组件,您可以在任何需要的地方重复使用它在那里显示详细信息。

I guess my main questions is, how to properly manage the panels and components in such a way that it will be easy for us to instantiate objects and perform system tasks in the enrollment system.

分离责任区域,让每个 View 只管理您需求的一个方面,然后构建这些(将 View 添加到一个公共(public)容器中)以生成更复杂的功能。

例如,您可以有一个简单的“患者详细信息” View ,显示有关用户的基本信息,然后您可以有一个“选择患者” View ,它只在 JList 中显示患者姓名>,然后您可以将它们组合成一个更复杂的 View ,以便当用户从 JList 中选择患者时,您可以显示患者的详细信息。

然后您可以有一个“专利历史” View ,结合“患者详细信息” View ,显示有关患者的基本详细信息,以及患者治疗历史的列表。

建议

如您所见,表单设计者并不鼓励您使用良好的设计实践。与其将您的 UI 视为单个实体,不如将重点放在责任的个体(最小单位)上并增加复杂性。

首先放弃表单设计器并手动构建 UI。这将帮助您了解如何通过使用不同的类生成复杂的 UI,以及表单设计者真正不鼓励的布局技巧。

一旦你能相当好地做到这一点,你就可以开始使用 UI 设计器来加速这个过程,允许你快速生成布局并组合它们(记住,你可以将项目类路径中的任何组件添加到你的形式,而不仅仅是调色板中的那些)

关于java - 手动或通过 GUI Builder 设计 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418530/

相关文章:

java - 更新两个 JProgressBars

java - 删除/替换独生子后 JTree.expandPath 的奇怪问题

java - 如何找到根元素值?

java - 如何在两次调用 Controller 方法之间保留数据?

java - 如何使值全局化,以便我可以访问类中的任何位置

Java:从资源文件夹内的文件夹中的txt文件读取

java - 如何在 JAVA (Netbeans IDE) 上进行自定义绑定(bind)

java - 将Gson添加到netbeans java项目中

java - James Gosling 解释为什么 Java 的字节是有符号的

java - 获取问题的通知电子邮件