自定义Java Swing GUI与Netbeans Drag n’Drop Editor
手动编码Java Swing GUI而不是使用Netbeans Drag n Drop编辑器有什么好处吗? 也许比如运行时? 在我看来,编辑器自动创建了相当多的额外代码,但我不知道这是否对加载视图的运行时有很大影响。 我目前使用编辑器的唯一原因是因为它使GUI构建快速而简单。 但有些事情你只能通过手工编码才能完成,这是通过编辑器无法实现的吗?
还有一个更好的GUI框架吗? 我已经看过Java FX,但我真的想要Github桌面软件带来的那种效果。 它看起来如此光滑和干净,几乎像一个webapp。 虽然我确信他们是用C ++做的。 在我看来,就图形而言,Java并不多。 我的一位朋友评论说,所有Java程序看起来都一样,到目前为止似乎都是如此。
我知道有类似的post,但坦率地说它们不是很近,例如以编程方式编写gui,或使用高级gui编辑器(Java Swing)? 这是2010年发布的还是学习Java Swing(GUI建设者还是没有?) ,这也是在2010年。如果没有什么新内容,很抱歉打扰你。
手动编码Java Swing GUI而不是使用Netbeans Drag n Drop编辑器有什么好处吗?
有很多,但让我们从明显的…开始
- 不会将您锁定在单个开发环境中。 这意味着您的代码可以与可能不使用Netbeans的其他人共享。 当您使用基于Maven的项目时,这一点尤为重要
- 鼓励您学习API。 您可以很好地理解API的实际工作方式,并学习很多技巧来制作流畅灵活的界面。
- 鼓励更多地分离respobsibilty。 简单地将组件拖到表单上就很容易了,这对封装或管理没有任何作用。 通过将UI划分为责任区域,可以更轻松地管理组件之间的不同状态和关系。 它还使代码通常更容易阅读,因为您不需要丢弃与您想要弄清楚的内容无关的内容。
- 更好的可扩展性。 在最好的情况下扩展组件并不容易,但使用基于表单的组件几乎不可能(或者至少一个数量级更难)
- Netbeans表单编辑器代码……一团糟……
不要误会我的意思,我使用表单编辑器,但在我拿起表单编辑器之前,我已经手工编写了Swing GUI十年。 我喜欢用于布置最终屏幕的表单编辑器,并且倾向于使用手动编码的UI来完成到那一步的每一步,可以说将钉子放在孔中。
简短的回答是 – 直到您可以手工制作多级GUI,远离表单设计者 – 恕我直言。
我知道有些人认为他们是很好的学习工具,我认为相反,我认为他们允许你发展懒惰和坏习惯,这将影响你未来的一切。
虽然开发环境不应该有所作为,但不是每个人都想要使用Netbeans,最好不要学习
还有一个更好的GUI框架吗?
这是一个意见问题。 Swing通过使用外观和感觉架构带来了皮肤概念,使您能够更改组件的外观和感觉。
JavaFX通过使用CSS提供类似的function
Swing也是高度可定制的,它很容易进入组件的“绘画”级别,甚至可以根据需要生成自己的级别。
制作“光滑”UI的能力与工具包无关,而在于开发人员。 将字段和其他组件放到容器上很容易,但是开发人员需要对底层API有一个很好的理解,并且需要一些实际看起来很好的人才才能让它看起来“光滑”。
漂亮并不总是等同function。 最好的用户界面是你不必考虑的,不会妨碍你的工作。 当你使用一个小时,几天,几周的程序时,你不会看到UI的外观有多漂亮,但它能让你得到你想要的东西 – 恕我直言
手工编码实现GUI Builder不能做的第一件事是:动态改变接口。
例如:
如果您想构建一个涉及多个JTextField
的表单,但是您不确定在构建GUI时会有多少个表单。 该程序需要动态填充JTextField
。 使用GUI Builder无法做到这一点。
此外,当您具有复杂的接口时, GroupLayout
的大小调整行为可能会很麻烦且令人困惑。 另一方面,当您编写复杂的界面时,手工编码的布局是很多工作(但至少它们的resize行为是可预测的)。