手动或通过 GUI Builder 设计 GUI

Design GUI by hand OR by GUI Builder

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

虽然我们正在设计它并向 class 添加了许多组件,但我们遇到了低内存编译错误,这让我认为继续通过 GUI Builder 设计它可能会导致长期问题 运行.

我们都是学生,很需要专家的意见和建议

这是我们当前 GUI 设计的屏幕截图,其中包含 classes.

的屏幕截图

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

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

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

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

对我来说,这个问题类似于一个人应该驾驶手动(手动)汽车还是自动(自动换档)汽车。好吧,如果你正在寻找舒适,快速完成它并且你不需要对你的 GUI 进行极端控制,即你把什么放在哪里然后自动。如果你对事情很挑剔,特别是如果它是一个大项目,那就手工做吧。

就管理而言,在进行此类项目之前,您需要制定计划并将其写在纸上。决定你想要多少 menus/frames/panels/buttons,它们里面应该有什么,你需要概述一个关于你需要什么来实现这些东西的总体思路。然后计划你需要多少个class,将相关的variables/methods放在一个class中是非常重要的。这听起来可能很乏味,而且需要做很多工作,但相信我,对于大型项目,它总能带来回报。它会让你的生活更轻松。

如果您还计划 upgrade/change 您的程序,我会推荐好的文档或至少有很多评论和好的变量命名技术。希望有所帮助。

一些准则:

  • 使用nested layouts封装视图组件

  • 为了便于制作原型,请使用 nested classes, which can be easily promoted to separate classes having package-private 访问权限。

  • here 所述,将托管容器的范围和数量限制为(相对)少数真正受益于使用 GUI 编辑器的容器。

使用表单编辑器还是手动编码 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.

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

通过将 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.

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

例如,您可以有一个简单的“患者详细信息”视图,显示有关用户的基本信息,然后您可以有一个“select 患者”视图,它只在 JList,然后您可以将它们组合成一个更复杂的视图,这样当用户 select 是来自 JList 的患者时,您可以显示患者的详细信息。

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

建议

正如您所发现的那样,表单设计者并不鼓励您使用良好的设计实践。与其将 UI 视为一个整体,不如将注意力集中在责任的个体(最小单位)上并增加复杂性。

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

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