手工设计GUI或GUI Builder

时间:2015-12-22 14:52:48

标签: java swing netbeans awt gui-builder

我知道我的问题也有类似的问题。但是有一些我想具体问一下,因为我们计划手工重新设计GUI。我们正在设计的系统将是一个将由学校使用的注册系统。

虽然我们正在设计它并在类中添加了许多组件,但我们遇到了一个低内存编译错误,这使我认为继续通过GUI Builder设计它可能会导致长期问题。

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

所以这里是我们当前GUI设计的截图,其中包含了类的截图。

enter image description here

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

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

enter image description here

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

我很感激任何建议或帮助。

3 个答案:

答案 0 :(得分:3)

对我来说,这个问题类似于是否应该驾驶一根手动车或一辆自动变速器(带有自动换档装置)。好吧,如果你正在寻找舒适,快速完成它,你不需要对你的GUI进行极端控制,即你放置什么,然后采取自动。如果您特别关注事物,特别是如果它是大型项目,请手工完成。

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

如果您还计划升级/更改您的程序,我会建议使用良好的文档或至少大量的注释和良好的变量命名技术。希望有所帮助。

答案 1 :(得分:3)

一些指导原则:

  • 使用nested layouts封装视图组件。

  • 为了便于原型设计,请使用nested classes,这可以轻松升级为具有package-private访问权限的类。

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

答案 2 :(得分:3)

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

当我第一次使用Swing时,表单编辑器就是废话。所以我学会了手工编写我的UI代码,它也帮助我在我工作的第一个项目中使用了动态加载机制,这意味着我们无法在代码中使用顶级容器,如JFrame,所以一切必须从JPanel开始。

  

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

这是一个好的开始,你还应该限制你向用户投掷的帧/窗口的数量,他们在生活中有足够的干扰来处理,而不会向他们投掷更多。相反,请使用尽可能少的窗口来管理您的视图,例如使用JTabbedPaneCardLayout(以及适当的对话框)

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

  

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

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

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

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

建议

表单设计人员不鼓励您使用正如您所发现的设计实践。而不是将您的UI视为一个单一的实体,您需要关注个人(最小单位)的责任并建立复杂性。

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

一旦你能够很好地完成这项工作,你就可以开始使用UI设计师来加速这个过程,让你快速生成布局并将它们组合起来(记住,你可以将项目类路径中的任何组件添加到你的形式,而不仅仅是那些在调色板中的那些)