用Java构建GUI

您更喜欢构建GUI的机制是什么:从头开始或使用GUI构建软件?

我实际上喜欢使用NetBeans GUI Builder构建GUI; 事情是,它是相当可定制的 – 它允许您更改用于自动生成的代码和自动生成的代码[没有双关语意图](这是自定义组件所必需的),它还允许“简单”的事件处理和约束力。 NetBeans GUI Builder不仅限于GroupLayout,而是允许您选择要使用的LayoutManager(表单属性对话框中的隐藏设置)。

但它并不总是最好的选择; 正如其他人已经说过的那样:当您需要完全控制您的应用程序,了解每一个JLabel,每个JButton等时,MiG Layout是一个不错的选择。

我必须承认我更喜欢Netbeans的GUI构建器,以便于使用和所见即所得。 但我也认为,如果您手动或使用GUI-Designer创建GUI代码,则无关紧要; 添加控件/自定义组件动态地与两者一起工作,执行此操作并且适用于两者等。唯一重要的是它可以工作。

(从我的观点来看,如果使用GUI-Builder可以更快地完成GUI的话,我没有看到手动编码的重点,因为我不明白为什么人们应该在没有某种好处的情况下手动编码它)

如果问题是关于使用Swing进行GUI开发,那么IMO最好在没有WYSIWIG工具的情况下手动编码所有内容。

为了使手动UI设计/编码高效,应该使用非常好的布局管理器。 MigLayout是这样的布局管理器之一。 自从我开始使用它以来,我从未回头看过WYSIWIG工具 – 一张纸,一支铅笔,MigLayout,您可以完全控制您的设计和代码。

如果纸张和铅笔方法不合适,像Balsamiq这样的工具也可以简化GUI模拟,以便快速进行原型设计。

我的个人意见绝不使用视觉编辑 。 在Java中使用GUI构建单一标准之前, 您会发现自己与IDE绑定在一起 。 在过去10年中,用于构建Java GUI的最佳IDE已经转换了很多(我想知道有多少项目因为从JBuilder切换而导致大量维护开销)。

对于大多数应用程序,GUI代码的实际布局可能类似于您可能花费整个应用程序编写总时间的5-10%。 因此,通过使用设计师将这一点减半,并不能在盛大的计划中拯救你。

将此与缺乏灵活性和更复杂的维护结合起来,手动编写GUI几乎总是更好。

我使用GUI构建器来快速原型设计和类似的东西。 但是当它归结为构建实际的生产GUI时,我从头开始编写代码。 我并不是在道德上反对GUI构建器,但我更喜欢对手工编写的代码进行更大的控制。

像任何代码生成器工具一样,恕我直言,在你至少理解这个概念之前,你不应该使用GUI构建器 – 在这种情况下,Swing布局管理器特别棘手。

如果你让我在NetBeans和by-Hand之间做出选择,我肯定会选择by-Hand。 我从未真正相信NetBeans GUI构建器的方法。 至少我最后一次使用它时,它依赖于一些专有的边车文件……

查看Visual Editor for Eclipse

您仍然希望了解编辑器正在为您做什么。

您需要知道Swing如何才能使事情正常工作。 没有什么比用手工建立来学习:)

那么Netbeans GUI构建器相当不错。

编辑:我强烈建议您阅读Java Tutorial Swing Trail – http://java.sun.com/docs/books/tutorial/ui/index.html

两者 – 使用WYSIWYG编辑器来推动滚动,但在一天结束时,您需要操作控件,并在某些情况下在运行时以编程方式创建它们。 Eclipse有各种免费编辑器作为插件。 转到eclipse.org并查看插件列表。

取决于您的要求。 有些GUI构建软件可以很好地处理简单的应用程序,但是,如果您的客户端需要许多自定义组件,则第三方GUI构建器可能无法正常工作。

此外,它取决于forms的数量和它们的复杂性。 例如,如果需要为数据库中的每个表构建表单,则第三方GUI构建器可能更快,更便宜。

根据我的经验,它因项目而异。

如果你想要一个复杂的gui,那么使用netbeans之类的东西来构建它并创建所有的事件。 如果你正在寻找一个相当简单的gui,那么手工构建仍然是一种选择。

我的公司使用Netbeans进行GUI和eclipse进行常规编程。
我们已经看过,但我们还没有找到任何其他(免费或至少便宜)工具,它可以像NetBeans一样完善GUI。

我曾经用纯文本编辑器从头开始编写它们……

这取决于你制作用户界面的原因,
我发现创建UI有两个原因:

首先是针对客户,在这些情况下,您希望UI得到完善,并且在这样的项目中处理得非常好,项目的核心或本质就是UI本身。
在这些情况下,通常最好手工制作UI的代码,因为它可能是非平凡的代码。

第二个原因通常是快速和脏的UI ,其中程序的核心是其他东西,并且通常为主应用程序上的控制方面创建UI,并且您是主要客户端。
在这些情况下,最好的办法是尽可能快地制作用户界面,因为你不想“浪费”时间来处理它,而且使用所见即所得的编辑器更合法。

我总是发现一个GUI构建器是一个好主意开始,然后我最终处于这样一种情况:我浪费时间来修复我自己的方式,而不是IDE,并使它们真正适合。 并且不要让我开始使用GUI构建器生成的混乱代码! 因此,从头开始构建通常更有效; 至少对于我来说…

我更喜欢自己手工编写GUI,所以我可以完全控制。 对于复杂的布局,我将使用JGoodies表单布局 。 它们用于指定布局的语法使得在纸上绘制GUI变得容易,然后将其传递给代码。

我尝试了Netbeans GUI构建器,并对它的易用性印象深刻。 然后我查看了它使用GroupLayout生成的代码,并决定通过这种方式你基本上把自己锁定到Netbeans,这是我不想做的事情。

我开始使用Swing手动编码。 现在我使用WYSIWYG编辑器,但我认为知道编辑器背后的内容很重要。 此外,您可能需要手动更新代码,WYSIWYG编辑器通常无法完全按照您的意愿执行操作。

在广泛创建Java GUI之后,我可以向您保证,这个过程经常很痛苦。 我很清楚Java的优势并不在于它的GUI,但我很惊讶一个不错的免费界面构建工具尚未发布。

有时我会使用Eclipse的Visual Builder工具进行快速和脏的模型。 它的代码生成有点可怕恕我直言。 我相信Netbean的Visual Editor是目前最好的(无论如何都是免费的); 但是,我发现自己手动滚动GUI代码以实现一致的跨平台布局。 如果您对这些免费的GUI编辑器(像我一样)感到失望,说实话,只需使用布局库(如MIG),然后自己动手。 一开始会很慢,但你会有更多的控制和更少的编辑器新手。

它确实取决于您尝试使用GUI完成的任务。 当我将计算机科学课程和测试function的想法折腾在一起时,Netbeans WYSIWYG编辑器非常棒,因为它会自动为您生成大量代码。 但是,我发现你通过手工(在Java中)比学习Netbeans更容易控制。

我尝试使用Eclipse的Visual Swing插件,但在某些情况下,它生成的代码消失了,我留下了一个充满错误的屏幕。 在我编写的所有GUI应用程序中,我使用Netbeans,即使我讨厌使用GroupLayout时生成的代码。 但是,如果您不关心布局代码,我认为您对它提供的开发速度非常满意。 您唯一需要做的就是实现事件逻辑和您可能需要的其他逻辑。

Eclipse的Visual Editor是一个很好的选择,因为它生成的代码非常简单,并且没有隐藏的魔力。 此外,您可以手动进行更改,编辑器将反映它们。

我测试了UI的模型,因此我将UI的function封装在一个完全与GUI库分离的类中,并且可以单独进行测试。 然后我在模型的顶部创建一个薄的包装层,这样GUI的事件处理程序大多是一行委托给UI模型。

我一直在使用IntelliJ IDEA的GUI构建器(使用JGoodies Forms布局管理器)。 在静态布局中布置组件非常方便。 但我认为,例如使用MiGLayout手动编写GUI布局代码非常容易,因此不一定需要GUI构建器,这有助于避免工具锁定。 无论如何,动态布局都需要手工编写。

但在编写任何代码之前,我首先设计并测试了UI的纸质原型,以便清楚地了解需要做什么。

如果您的目标是创建最终的Java GUI,我建议使用名为“Jigloo GUI Builder”的Eclipse插件,它可以生成干净且可维护的Java代码。 如果您只是想快速创建GUI以供审阅,您可以尝试像“ForeUI”这样的UI原型设计工具。

在以下情况下使用GUI Designer没有任何问题:您了解IDE的function和生成内容,如何自定义IDE输出您了解IDE实际生成的代码

至少了解Swing的基础知识非常重要。 想象一下,这种情况经常发生。

Q:"I have 10 years of experience writing swing applications" A:ok Q:How would you debug this code A:Oh wait, there's no Netbeans form file??? You guys are not high tech! Q:Hum.. you don't understand it? A:Of course not, it's like machine code, you need to refractor it all and use an IDE! 

我发现GU​​I构建器通常会使事情变得复杂,我宁愿知道构建GUI时发生了什么,而不仅仅是使用创建的变量。 我想因为我不了解Swing和布局管理器的一切,我害怕生成我没有概念或者不知道它是如何工作的代码。

当我使用AutoIt进行简单的脚本编写时,我知道只能在具有足够大屏幕的机器上使用,我将使用GUI表单编辑器。 但是,对于商业应用程序以及可能在具有任何规范的计算机上运行的应用程序,我通常会回避GUI构建器。

这就是说我认为我的决定可能会受到我对布局管理人员缺乏了解的影响,也许将来我会开始更多地接受它们,因为当你完全理解时我​​会发现使用它们并没有错。 与某些程序员可能会说的不同,如果您使用具有惰性意图的软件,那么构建GUI只是一种懒惰的方式,而不是为应用程序编写而有效。

要直接回答原始问题,99.5%的时间我会从头开始编写GUI!