9

我们进退两难;使用 Matisse 或 Jigloo 开发桌面应用程序。

Matisse 有这个 XML 格式文件,以后怕维护,不知道 MyEclipse 是否应该进一步支持 Matisse,甚至 Netbeans——你认为他们会放弃对 Matisse 的 OS 支持吗?

Jigloo 和 Matisse 或多或少有类似的行为,虽然 Jigloo 服从更多设计师的意愿,但 Matisse 时不时有这种奇怪的对齐行为。

Jigloo 生成可以编辑的 Java 代码,这反过来又会导致可视化编辑器无法绘制表单。这可能就是为什么 Matisse 想要以更稳定的 XML 形式定义元素并从中生成 java 代码的原因。

如果在实例化 GUI 元素时出现错误,Matisse 将无济于事,因此放置自定义元素也可能是一场噩梦。

在 Jigloo 中输入代码时,可视化编辑器喜欢擦除图片,因此您必须在编辑完代码后等待图片出现。在 Matisse 中,您可能会在课堂上出现错误并仍在编辑 GUI。

请通过投票帮助我们,您更喜欢什么以及为什么。

4

7 回答 7

15

也请不要使用!与这个答案一样,我强烈认为(在编写 Swing GUI 10 年后),除了最极端的情况外,使用 GUI 构建器是一个坏主意手动编码您的 GUI!

  • 无论您选择 Matisse 还是 Jigloo,它都不是标准,会失宠,会出现更好的工具。那时,您将拥有几乎无法维护的遗留代码。这在 Java GUI 构建器的历史上已经发生过几次。

  • 您应该避免强迫您的开发人员使用一个 IDE,并且期望开发人员在查看 GUI 代码时切换到特定的 IDE 是一个巨大的开销。他们会因为不记得键绑定、项目设置过时、安装了错误的版本等而感到沮丧。人们会在没有 builder 的情况下进行快速修复。此时,您的代码在您选择的 IDE 和 GUI 构建器 istelf 中都无法维护!整个事情是一团糟。

  • 根据我的经验,设计 GUI 并不是一项特别繁重的任务,并且可能只占应用程序总开发时间的 5-10%。即使最初使用 Matisse 或 Jigloo 为您提供比手动编写 GUI 50% 的时间优势,这在宏伟的计划中是微不足道的。这当然不值得隐藏成本和即将到来的维护灾难。

  • GridBagLayout 不难。它只是不是!事实上,这很简单。这将花费您几分钟的时间来学习,之后您将永远不会回头。您的 GUI 将看起来像您希望它们的外观,因此您的代码将更易于维护。使用GridBagLayout

我之前已经花了很多时间警告人们这件事,并被证明是正确的。

于 2009-09-09T15:57:44.973 回答
2

我个人有过几次支持 Matisse 表单的 XML 文件不知何故与代码不同步的情况,不得不求助于备份以使其再次工作。这足以把我吓跑。不过,我没有使用 Jigloo 的经验。

我目前的项目广泛使用TableLayout。它很容易理解和(在我尝试过的所有布局管理器中)维护。我在 Java 的 GUI 设计中没有找到任何其他解决方案,我觉得比手工编写 GUI 更舒服。展望未来,这似乎是编写我的 GUI 的最佳“面向未来”的方式。

我同意 Chintan 使用 Matisse 或类似工具来模拟您的设计,然后将布局转换为另一种布局(如 TableLayout)。就个人而言,我喜欢用铅笔和纸来完成大部分工作。不完全是高科技,但它可以完成工作。

于 2009-09-03T22:46:00.087 回答
1

我也不会去。到目前为止,我发现的最好的东西是 Instantiations Swing Designer。它不是免费的,但也不昂贵。它支持所有主要的 Swing 布局,并且除了纯 Java 代码之外不创建任何额外的工件。

这是链接,如果您有兴趣。

于 2009-09-02T18:52:18.907 回答
1

我更喜欢 Matisse,因为 Netbeans 得到了 Sun Microsystems 的支持,而且该项目在不久的将来被废弃的可能性似乎非常低。

此外,我不知道您的项目的大小,但我开发了一些小项目,我个人使用 matisse 来查看布局的外观,然后继续使用Miglayout库对所有内容进行编码。它大大增加了编码量,但提供了良好的控制和灵活性。这个库有可能包含在 Java 7 中,因此嵌入到 Matisse 中。

于 2009-09-03T21:12:39.513 回答
0

我更喜欢 Netbeans Matise。即使无法编辑生成的代码,使用 Mattise 设计复杂的屏幕也容易得多(因为 FreeForm 布局)。

于 2009-09-02T16:51:39.740 回答
0

我还没有尝试过 Jigloo,但我会在其中加入第四个。

JFormDesigner 是我用过的最好的 Swing UI 设计器。与 Matisse 一样,它确实创建了 XML 表单文件,但这是该工具唯一的缺点。

它支持所有标准布局管理器,以及一些流行的(例如 JGoodies FormLayout)。它具有 IntelliJ 和 eclipse 插件,也可以作为独立工具运行。

这是链接

hth

科恩

于 2009-09-03T15:27:54.020 回答
0

当您弄乱由工具生成的文件时,您会期待什么?混乱,不是吗?这是一个非常非常重要的,总是被开发人员遗忘。

以马蒂斯为例。它会为您生成一个 XML 文件和一个 .java 文件。为什么地球上的开发人员开始改变这些类?后来他们抱怨一切都一团糟,他们指出马蒂斯是有罪的,因为马蒂斯没有做 A 或没有做 B。马蒂斯唯一有罪的是无法修复开发人员推动的混乱. 这是人工智能领域的问题,我个人并不期望很快有任何解决方案。

有一个或多或少简单的解决方案:OOP。

我解释说:OOP 最重要的概念之一是“责任”,这意味着某个类在更广泛和更复杂的问题域中具有有限且明确定义的责任。因此,Matisse 为您生成了 UI,它基本上由 UI 元素、事件处理程序等组成。

然后你说:嗯...我需要添加一些逻辑,否则 UI 将不起作用。真的。这是另一个责任,它永远不能 在 Matisse 生成的同一个类中实现。因为要么人们很懒惰,要么不明白 OOP 中的“责任”是什么意思,人们实现了他们需要的任何东西,添加了大量变量并在一个绝对不负责业务逻辑的类中促进各种疯狂。

通过像继承这样非常简单的事情,您可以在扩展类中分离业务逻辑。基类是由马蒂斯产生的。扩展的类是您手动实现的类,其中包含事件处理程序的实现、UI 元素的初始化等。

许多开发人员很想手动编辑 Matisse 生成的 .java 文件。黄金法则是:永远不要手动编辑 .java 文件。Matisse 为您提供了定义所需内容并调用所需内容的方法。永远不要编辑 Matisse 生成的资源(.xml 和 .java),您保证它(Matisse)能够再次加载它,以防您将来需要更改 GUI。您可能会发现自己很想直接编辑 .java 甚至 .xml 文件。请抵制这种诱惑并教育自己;将来你会感谢自己的。

So... you can use whatever tool you wish or whatever provides the sexiest UI elements. All tools will fail if you fail to separate UI from business logic. All tools will succeed if you succeed in your main task as programmer which is: produce decent code.

于 2010-03-04T02:32:51.950 回答