Java 手工或GUI生成器设计GUI

Java 手工或GUI生成器设计GUI,java,swing,netbeans,awt,gui-builder,Java,Swing,Netbeans,Awt,Gui Builder,我知道我的问题也有类似的问题。但我想特别问几个问题,因为我们计划手工重新设计GUI。我们正在设计的系统将是学校使用的招生系统 当我们在设计它并向类中添加了许多组件时,我们遇到了一个内存不足的编译错误,这使我认为继续通过GUI Builder进行设计可能会在长期内导致问题 我真的需要专家的意见和建议,因为我们只是学生 下面是我们当前GUI设计的屏幕截图及其类的屏幕截图 这实际上是一个错误,将所有面板和其他组件放在class enrolment_System.java中,我怀疑这超出了projec

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

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

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

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

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

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

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


我非常感谢任何建议或帮助。

对我来说,这个问题类似于一个人应该驾驶手动的斗杆车还是自动的(带自动换档的)。如果您想要舒适,那么可以快速完成,并且不需要对GUI进行极端控制,也就是说,您可以把什么放在哪里,然后自动执行。如果你对事情特别挑剔,尤其是大型项目,那么就用手来做

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


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

对我来说,这个问题类似于驾驶斗杆(手动)汽车还是自动(自动换档)汽车。如果您想要舒适,那么可以快速完成,并且不需要对GUI进行极端控制,也就是说,您可以把什么放在哪里,然后自动执行。如果你对事情特别挑剔,尤其是大型项目,那么就用手来做

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

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

一些指导原则:

  • 用于封装视图组件

  • 为了简化原型设计,请使用,它可以轻松地升级到具有访问权限的单独类

  • 如前所述,将托管容器的范围和数量限制为(相对而言)少数真正从使用GUI编辑器中获益的容器

一些指南:

  • 用于封装视图组件

  • 为了简化原型设计,请使用,它可以轻松地升级到具有访问权限的单独类

  • 如前所述,将托管容器的范围和数量限制为(相对而言)少数真正从使用GUI编辑器中获益的容器


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

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

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

这是一个很好的开始,你也应该限制你对你的用户抛出的帧/窗口的数量,他们有足够的分心在那里的生活处理,而不是你向他们抛出更多。相反,以尽可能少使用窗口的方式管理视图,如使用
JTabbedPane
s或
CardLayout
(以及适当的对话框)

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

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

分离责任区域,允许每个视图只管理需求的一个方面