用Java构建GUI

时间:2009-07-14 17:17:52

标签: java user-interface

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

23 个答案:

答案 0 :(得分:17)

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

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

如果纸张和铅笔方法不合适,像Balsamiq这样的工具可以简化GUI模型的快速原型制作。

答案 1 :(得分:12)

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

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

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

答案 2 :(得分:10)

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

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

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

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

答案 3 :(得分:4)

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

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

答案 4 :(得分:3)

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

答案 5 :(得分:2)

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

答案 6 :(得分:2)

查看Visual Editor了解Eclipse

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

答案 7 :(得分:2)

你需要知道Swing如何才能使事情正常运行。没有什么比用手工建立来了解:)

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

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

答案 8 :(得分:1)

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

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

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

答案 9 :(得分:1)

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

答案 10 :(得分:1)

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

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

答案 11 :(得分:1)

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

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

答案 12 :(得分:1)

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

答案 13 :(得分:1)

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

答案 14 :(得分:1)

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

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

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

答案 15 :(得分:1)

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

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

答案 16 :(得分:0)

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

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

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

答案 20 :(得分:0)

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

答案 21 :(得分:0)

在以下情况下使用GUI Designer没有任何问题: 您了解IDE的功能和生成内容,以及如何自定义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!

答案 22 :(得分:0)

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

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

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

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