自定义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行为是可预测的)。