【问题标题】:Write gui programatically, or using an advanced gui editor (Java Swing)?以编程方式编写 gui,还是使用高级 gui 编辑器(Java Swing)?
【发布时间】:2010-03-15 21:28:34
【问题描述】:

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

Netbeans 似乎有一个非常先进的 GUI 编辑器……我仍然对它生成的代码存有疑问。此外,我不喜欢代码部分被锁定的事实(我仍然理解需要)。

有人成功使用过 Netbeans GUI 编辑器吗? 它会“缩放”吗?

【问题讨论】:

    标签: java user-interface swing netbeans


    【解决方案1】:

    是的,NetBeans GUI 构建器是最好的之一。我对它处理臭名昭著的GridBagLayout 的能力印象特别深刻。

    根据我的经验,Borland JBuilder 是最好的往返 GUI 编辑器;如果我没记错的话,它生成的代码没有“锁定区域”,并且通常可以继续优雅地使用您手动调整的 GUI 代码。

    不过,我还没有找到一个不会偶尔卡住复杂布局的 Java Swing GUI 编辑器,即进入不再进行进一步编辑和/或需要一些备份或修复的状态。

    因此,我更喜欢手动编写所有 GUI。 JavaSpecialists 的 Heinz Kabutz 告诉我他的 GUI 编辑器是 vim。但是,我承认我的大多数其他朋友和同事都认为我这样做很疯狂。

    【讨论】:

    • 感谢您的回答。非常感谢。
    • 我实际上喜欢在 Swing 中手动编码 GUI,但也许我只是疯了?我已经为中等复杂的程序做到了这一点,而且效果很好。
    • 我总是手工编写我的 GUI。但我尽量避免使用需要大量样板代码的 LayoutManager(例如 GridBagLayout)。我更喜欢“智能”布局,例如 DesignGridLayout 或包装 GBL 的库以提供更好的 API(painless-gridbag)。这些使得编写代码 GUI 变得容易,并且仍然可以在之后维护它们。
    • 你所说的关于 JBuilder 的往返行程很有趣。当我使用它时,我发现它总是无法适应我的手动代码调整,这是让我远离 gui 构建器的原因之一。但是,这是很久以前的事了,现在听起来可能会更好。
    • @Marshall Alsup:我猜我们只是有不同的编码/调整风格,巧合的是,我倾向于对 JBuilder 友好的更改,而你没有。
    【解决方案2】:

    使用最新版本的 Netbeans,您可以在 Eclipse 和 Netbeans 之间共享项目。因此,如果您不太喜欢在其中编写代码,则可以将其仅用于 GUI 功能,然后在 Eclipse 中编辑代码。确保首先在 Eclipse 中创建项目,然后使用导入器。他们将共享同一个目录。

    http://netbeans.org/kb/docs/java/import-eclipse.html

    【讨论】:

    • 酷,我认为这是有用的信息,+1!
    • 如果您使用 Eclipse,您现在应该使用 WindowBuilder
    【解决方案3】:

    我一直更喜欢手写我的 Swing UI。我已经尝试过 Netbeans,但我只是不相信它能为复杂的 UI 做正确的事情(尽管它对于一个小的简单 UI 来说非常棒)。

    我想我们很多人都害怕因为 GridBagLayout 而手动编写 Swing 布局。用过几次就没那么难了。我曾经发誓。但是,最近我换了一份新工作,他们现有的代码改用TableLayout。它更简单,对我来说似乎同样强大。我已经成长为更喜欢它而不是 GBL。如果您是编写 Swing 的新手,我认为您应该考虑一下。

    很抱歉,我不确定你的规模问题。

    祝你好运!

    关于 JBuilder 的有趣故事。教我 swing 的朋友教我手动编写代码,他总是让我将布局代码放在 jbinit() 方法中。几个星期以来,我一直认为这只是他使用的一些代码风格。直到后来我才知道它是当时 JBuilder 的一个自动生成的方法。我根本不需要使用它。我就是这样一个 n00b :)

    【讨论】:

    • 有趣,我以前从未听说过 TableLayout。我可以推荐的另一个“新奇”布局管理器是 GroupLayout,它比 GridBagLayout 更通用,但 (IMO) 更易于使用。以前我通过嵌套组件来创建复杂的布局,现在我可以将 GroupLayouts 嵌套在单个组件中。最后,MiGLayout 是第 3 方,但在易用性和功耗方面也有很大的比例;许多人的首选,并且是 Sun JDK 的候选者。
    【解决方案4】:

    我最近(4 周前)从 eclipse/SWT 切换到 Netbeans 6.8/Swing(在厌倦了 Eclipse 中的一些插件许可问题之后)。我对 Netbeans 或 Swing 都不熟悉,我很快就被打动了。我设法将 4 年的 SWT 经验快速转化为 Swing 经验,现在认为 Netbeans 是最好的 Java GUI 编辑器。虽然自动生成的代码的某些部分是只读的 - 这是一件好事。 Eclipse 允许您编辑自动生成的代码,如果您犯了错误,这可能会导致布局、对齐等问题。 Netbeans 允许您创建自定义的“事件处理方法”(仅限我的术语),它会获取自动生成的块以在生命周期的特定点调用您的方法,以便您可以在需要时访问“只读”代码。

    所以坚持使用 NetBeans,它是最好的 Java Swing 环境。

    您不想为任何大小合理的应用手动编码。让 GUI 为您完成大部分工作(尤其是在使用不同的布局时 - 仅此一项就会让您大吃一惊),这样您就可以专注于服务/业务逻辑。

    【讨论】:

      【解决方案5】:

      我在 Eclipse 中使用过 netbeans、WindowsBuilder 插件,并且只能手动编写 Swing 代码。我非常欣赏netbeans 和windows builder 为您编写swing 代码的事实,但我喜欢了解我项目中的每一寸代码,并且知道当我想要更复杂并添加细节时该去哪里。话虽如此,我认为 netbeans 也值得一试,但我对浏览生成的 java 代码有点紧张,而如果我是从头开始编写它们,我就不用担心了。

      用于 Eclipse 的 WindowsBuilder 插件完全搞砸了我的 Eclipse,内容辅助变得永久缓慢,即使在删除它之后也是如此。虽然 Swing 数据绑定框架有一些学习曲线(至少对我来说,因为我不知道它与 JFace 数据绑定框架相同),但我很难找到它的文档,并被提到了 JFace wiki... .

      总的来说,您是对的,我认为您确实可以更多地考虑您的应用程序逻辑,而不是编写花费在 gui 上的管道代码,但是如果您自己编写它们,它会变得越来越快。我也不喜欢我需要依赖 gui 编辑器来创建我的应用程序这一事实。

      【讨论】:

        猜你喜欢
        • 2015-09-11
        • 2012-04-17
        • 2016-06-15
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        相关资源
        最近更新 更多