1

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

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

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

所以这是我们当前的 GUI 设计的屏幕截图和它的类的屏幕截图。

在此处输入图像描述

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

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

在此处输入图像描述

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

我将不胜感激任何建议或帮助。

4

3 回答 3

3

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

就管理而言,在这样的项目之前,您需要制定计划并将其写在纸上。决定你想要多少个菜单/框架/面板/按钮,它们里面应该有什么,你需要概述一下实现这些东西需要什么。然后计划好你需要多少个类,把相关的变量/方法放在一个类中是非常重要的。这听起来可能很乏味,而且工作量很大,但相信我对于大项目总是有回报的。它会让你的生活更轻松。

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

于 2015-12-22T15:20:28.670 回答
3

一些指导方针:

  • 使用嵌套布局封装视图组件。

  • 为了便于原型设计,请使用嵌套类,它可以很容易地提升为具有包私有访问权限的单独类。

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

于 2015-12-22T15:57:13.260 回答
3

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

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

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

这是一个好的开始,你还应该限制你扔给用户的帧/窗口的数量,他们有足够的干扰来处理,而不需要你扔给他们更多。相反,以使用尽可能少的窗口的方式管理您的视图,例如使用JTabbedPanes 或CardLayout(以及适当的对话框)

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

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

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

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

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

建议

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

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

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

于 2015-12-22T21:48:59.317 回答