代码之家  ›  专栏  ›  技术社区  ›  devamat

NetBeans:使用Swing GUI还是通过编程创建GUI?[重复]

  •  0
  • devamat  · 技术社区  · 6 年前

    手工编写Java Swing GUI而不是使用Netbeans拖放编辑器有什么好处吗?比如跑步?在我看来,编辑器自动创建了相当多的额外代码,但我不知道这是否对加载视图的运行时有很大影响。我目前使用该编辑器的唯一原因是,它使GUI构建变得快速而简单。但是,有没有一些事情你只能通过手工编码,而通过编辑器是不可能做到的呢?

    还有更好的GUI框架吗?我已经看过JavaFX,但我真的想要Github桌面软件的那种效果。它看起来如此光滑干净,几乎像一个网络应用。虽然我确信他们在C++中做到了。在我看来,当涉及到图形时,Java并没有什么优势。我的一个朋友评论说,所有的Java程序看起来都一样,到目前为止,这似乎是真的。

    我知道也有类似的帖子,但坦率地说,它们不是最近发布的,比如 Write gui programatically, or using an advanced gui editor (Java Swing)? 是在2010年还是2010年发布的 Learning Java Swing (GUI builder or not?) 也是在2010年。如果没有什么新鲜事,很抱歉打扰你。

    0 回复  |  直到 7 年前
        1
  •  7
  •   MadProgrammer    11 年前

    手工编写Java Swing GUI而不是使用Netbeans拖放编辑器有什么好处吗?

    有很多,但让我们从显而易见的开始。。。

    • 不会将您锁定在单一的开发环境中。这意味着你的代码可以共享给其他可能不使用Netbeans的人。当您使用基于Maven的项目时,这一点尤其重要
    • 鼓励您学习API。您对API的实际工作原理有了很好的了解,并学习了很多技巧来创建流畅灵活的接口。
    • 鼓励责任的进一步分离。只需将组件拖到表单上就很容易了,这对封装或管理没有任何作用。通过将UI划分为责任区域,可以更容易地管理组件之间的不同状态和关系。它还使代码通常更容易阅读,因为你不需要不断丢弃与你想弄明白的内容无关的内容。
    • 更好的可扩展性。在最好的情况下,扩展组件并不容易,但使用基于表单的组件几乎是不可能的(或者至少要困难一个数量级)
    • Netbeans表单编辑器代码是。。。一团糟。。。

    别误会,我使用表单编辑器,但在我拿起表单编辑器之前,我已经手工编写Swing GUI十年了。我喜欢表单编辑器来布置最终的屏幕,并且倾向于使用手工编码的用户界面来完成每一步,可以说是把钉子放进洞里。

    简单的回答是——在你可以手工制作一个多层次的GUI之前,远离表单设计者——IMHO。

    我知道有些人认为他们是很好的学习工具,我认为恰恰相反,我认为他们让你养成懒惰和坏习惯,这将影响你未来所做的一切。

    虽然开发环境不应该有什么不同,但并不是每个人都想使用Netbeans,最好是学会不用它

    还有更好的GUI框架吗?

    这完全是意见问题。Swing通过使用 look and feel 体系结构,它为您提供了改变组件外观和感觉的能力。

    JavaFX通过使用CSS提供了类似的功能

    Swing也是高度可定制的,它很容易进入组件的“绘制”级别,甚至可以根据需要生成自己的组件。

    制作“流畅”UI的能力与工具包无关,而是取决于开发人员。把字段和其他组件放到一个容器上很容易,但这需要一个对底层API有很好理解的开发人员,以及一些真正看起来不错的人才,才能让它看起来“光滑”。

    漂亮并不总是等同于功能。最好的用户界面是你不必考虑的,不会妨碍你的工作。当你在一个程序上工作了数小时、数天、数周后,你不会看到UI看起来有多漂亮,而是会看到它能让你完成你想做的事情有多好

        2
  •  0
  •   ryvantage    11 年前

    手工编码完成了GUI构建器无法完成的第一件事:动态更改界面。

    例如:

    如果你想建立一个包含多个 JTextField s、 但您不确定在构建GUI时会有多少。该程序将需要填充 文本框 这是动态的。这在GUI构建器中是不可能的。

    此外,当您有复杂的接口时 GroupLayout 可能会很麻烦,让人困惑。另一方面,在编写复杂界面时,手工编码的布局需要大量工作(但至少它们的调整大小行为是可预测的)。

        3
  •  0
  •   user3649688    3 年前

    一个经典的图形用户界面生成器应该用于原型化您的图形用户界面。一旦你确切地知道你想要什么,你就应该去掉它,清理代码(分解它,记录它,…简而言之,让它简单易读)。

    我的一个朋友评论说,所有的Java程序看起来都一样,到目前为止,这似乎是真的。

    并非绝对正确:JavaFX外观可以通过css进行定制。Swing也可以通过LAF系统或覆盖paint*方法进行完全定制(我承认这更耗时)。

    如果你想找一个没有生成代码缺点的简单代码,我建议你看看 ReflectionUI :轻松定制外观(这不是唯一的好处): enter image description here .