使用高级GUI编辑器(Java Swing)还是编程方式编写GUI程序?

6

我计划编写一个基于Swing的应用程序(使用Netbeans 6.8)。

看起来Netbeans有一个非常先进的GUI编辑器...但是我对它生成的代码仍然有疑虑。此外,我不喜欢部分代码被锁定的事实(尽管我理解这种需要)。

有人成功地使用过Netbeans GUI编辑器吗? 它是否“可扩展”?

5个回答

7
是的,NetBeans GUI构建器是最好的之一。我尤其对它如何处理臭名昭著的GridBagLayout印象深刻。
在我看来,Borland JBuilder是最好的往返GUI编辑器;如果我记得正确,它生成的代码没有“锁定区域”,通常会继续与您手动调整的GUI代码优雅地工作。
然而,我仍然没有找到一个Java Swing GUI编辑器不会偶尔在复杂的布局上出现问题,即进入无法进一步编辑和/或需要一些备份或修复的状态。
因此,我更喜欢手动编写所有的GUI。JavaSpecialists的Heinz Kabutz告诉我他的GUI编辑器是vim。不过,我承认我的大多数朋友和同事都认为我这样做很疯狂。

1
我其实很喜欢手写Swing GUI,不过可能我有点疯狂吧?我已经用这种方式写出了相对复杂的程序,而且效果还不错。 - Tikhon Jelvis
我总是手写我的GUI。但我尽量避免需要大量样板代码的布局管理器(例如GridBagLayout)。我更喜欢“智能”布局,如DesignGridLayout或将GBL包装为更好的API的库(painless-gridbag)。 这些使手写GUI变得容易,并且仍然可以在之后维护它们。 - jfpoilpret
你提到了JBuilder的往返功能,这很有趣。当我使用它时,我发现它总是无法适应我的手动代码调整,这是让我对GUI构建器失去兴趣的原因之一。不过,这已经是很久以前的事情了,听起来现在可能会更好。 - Marshall Alsup
@Marshall Alsup:我的猜测是,我们只是有不同的编码/调试风格,而我碰巧倾向于 JBuilder 友好的更改,而您则没有。 - Carl Smotricz

6
使用最新版本的Netbeans,您可以在Eclipse和Netbeans之间共享项目。因此,如果您不喜欢在其中编码,您可以仅使用其GUI功能,然后在Eclipse中编辑代码。请确保首先在Eclipse中创建项目,然后再使用导入程序。它们将共享同一个目录。 http://netbeans.org/kb/docs/java/import-eclipse.html

1
酷,我认为这是有用的信息,点赞! - Carl Smotricz
如果你使用Eclipse,现在应该使用WindowBuilder - Chris Dennett

4
我一直更喜欢手写我的Swing用户界面。我尝试过Netbeans,但我不相信它能为复杂的UI做正确的事情(尽管对于小而简单的UI来说,它非常棒)。
我认为我们很多人都害怕手写Swing布局,因为GridBagLayout。一旦你用过几次,它并不难。我曾经对它发誓。然而,最近我换了一份工作,他们现有的代码使用TableLayout。它更简单,对我来说似乎同样强大。我已经更喜欢它了。如果你是新手编写Swing,请考虑使用它。
抱歉,我不确定你关于规模的问题。
祝你好运!
有关JBuilder的有趣故事。我的朋友教我swing时教我手写代码,并让我将布局代码放在jbinit()方法中。几个星期以来,我认为这只是他使用的一些代码风格。后来我才知道那是JBuilder当时自动生成的方法。我根本不需要使用它。我太菜了 :)

有趣的是,我以前从未听说过TableLayout。另一个我可以推荐的“新潮”布局管理器是GroupLayout,它比GridBagLayout更加灵活,但(在我看来)更容易使用。以前我用嵌套组件来创建复杂的布局,现在我可以在单个组件中嵌套GroupLayouts。最后,MiGLayout是第三方库,但也具有出色的易用性和功能比例;被许多人青睐,并成为Sun JDK的候选项。 - Carl Smotricz

2
我最近(4周前)从Eclipse / SWT转换到Netbeans 6.8 / Swing(因为我对Eclipse中的一些插件许可问题感到厌烦)。我没有熟悉Netbeans或Swing,但很快就被它们所吸引了。我成功地将4年的SWT经验迅速转化为Swing经验,现在认为Netbeans是最好的Java GUI编辑器。尽管某些自动生成的代码部分是只读的 - 这是一件好事。Eclipse允许您编辑自动生成的代码,如果您犯错,这可能会导致布局、对齐等方面的重大问题。Netbeans允许您创建自定义的“事件处理方法”(仅限我的术语),可以在生命周期的特定点调用自动生成的块以便在需要时访问“只读”代码。
因此,请坚持使用NetBeans,它是最好的Java Swing环境。
对于任何相当大的应用程序,您都不想手动编码。让GUI为您完成大部分工作(特别是使用不同的布局 - 仅此就足以让您抓狂),这样您就可以专注于服务/业务逻辑。

1

我曾经使用过NetBeans、Eclipse中的WindowsBuilder插件,也尝试过手写Swing代码。我当然很欣赏NetBeans和WindowsBuilder为你自动生成Swing代码的功能,但我更喜欢了解项目中每一行代码的细节,以便在需要添加更复杂的细节时知道该去哪里。话虽如此,我认为还是值得尝试一下NetBeans,只是我有点担心要浏览生成的Java代码,而如果我从头开始编写它们,就不会有这个问题。

Eclipse中的WindowsBuilder插件彻底搞乱了我的Eclipse,即使删除了它,内容辅助功能仍然变得永久缓慢。虽然Swing数据绑定框架有一些学习曲线(至少对我来说是这样,因为我不知道它与JFace数据绑定框架相同),但我很难找到相关文档,被引导到了JFace wiki......

总的来说,你是对的,我认为你可以更多地考虑应用程序逻辑,而不是花费时间在GUI上编写管道代码,但如果你自己编写它们,速度会越来越快。我也不喜欢依赖GUI编辑器来创建我的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接