现在应该选择哪个Java GUI框架?

18

如果您现在或不久的将来要开始新项目,您会选择哪个GUI框架/库?

它必须是免费的商业使用和跨平台的。

我一直很喜欢使用Swing,但Sun似乎正在推动Swing过时,并推出尚未准备好用于生产的JavaFX。

还有SWT,但它在Linux上似乎存在问题。

您选择哪个GUI库/框架?

编辑:Sun取消了swingx项目。从关于http://swingx.dev.java.net的论坛评论中可以看出,大多数之前曾在核心Swing上工作的Sun资源现在全职开发JavaFx。


@Marko:你为什么认为Swing会被弃用?你如何看待JavaFX作为替代品? - Ande Turner
JavaFX现在是否已经有非beta版本可用?我认为JavaFX不会成为Swing的竞争对手。当我第一次看JavaFX时,它们似乎是互补的... - Brian Knoblauch
SwingX并没有被取消,也不是Swing。SwingX是一个开源项目,旨在为Swing添加扩展。目前Sun公司没有专门的员工致力于SwingX。显然,目前JavaFX正在投入大量的精力。JavaFX桌面使用Swing。 - Tom Hawtin - tackline
3个回答

8
我认为尽管Sun公司管理不善,Swing仍然是一个优秀的框架。你可以用它做很多事情,特别是如果这些事情涉及自定义渲染UI控件。如果你的应用程序需要品牌化LAF,甚至只需要一些复杂的自定义控件,那么Swing正是你想要的。
另一方面,我确实很喜欢SWT。它因为每个人都认为它是IBM试图接管Java而声名狼藉,但它实际上只是另一个UI框架,非常适合与Swing配合使用。我不建议将SWT用于超复杂的图形渲染(具体来说:合成)或创建非常复杂的自定义控件,但对于其他所有内容,它真的很好用。API本身因依赖位掩码和用户管理事件分发循环等问题而受到批评,但大多数问题在你习惯后就会变得非常透明。组件本身比Swing的简单得多(在可扩展性和类似方面),这意味着API可以相应地更简单。我实际上记得如何在SWT中创建和填充表格;而在没有Google帮助的情况下,我认为我从未在Swing中处理过这个问题。
SWT目前最大的问题是稳定版本依赖于Mac OS X上的Carbon。这意味着SWT应用程序只能在Java 5上运行32位(或在SoyLatte上运行32位)。至于其他平台,SWT在Windows(Vista和XP)上非常出色,在GTK Linux上也几乎同样出色。我最近没有遇到任何关于SWT在Linux上的问题,所以我对你提到它是一个痛点感到有些惊讶。
回到你的问题:一切都取决于你的应用程序需要什么。如果它是一个闪亮的自定义样式应用程序,有大量自定义控件和复杂的合成,Swing是唯一的选择。然而,如果更简单的API对你更重要,或者如果你的用户要求平台LAF保真度的极致,那么SWT是最好的选择。

我认为SWT是一个相当不错的GUI框架。它还可以在PocketPC上运行,这意味着当管理层提出需求时,您可以相当快地创建应用程序的移动版本! - JeeBee

4

现在,我要么使用SWT,要么使用Qt(Jambi)。

Swing已经有10年没有更新了,存在的漏洞没有修复,开发已停止,转而支持JavaFX,所以你不会再看到任何新功能。JavaFX可能看起来很棒,但它仍然是一种虚拟软件,而且它是由让Swing饿死的人制作的,所以我对它不抱有任何希望。

在SWT和Qt之间,我更喜欢使用Qt,因为它是一个非常成熟和强大的框架,由知道自己在做什么的人制作(总体上是这样的:)),只有当新项目的许可证与Qt不兼容时,我才会使用SWT。


3

我仍在使用Swing,直到它完全停止支持之前我将继续使用。谢谢你提供关于Javafx的信息,我现在需要研究一下。


是的,它的支持方式类似于AWT的支持方式,但Swing方面不会有任何新的开发。 - Marko
1
啊,但如果当前版本能够满足您的需求,那么谁在乎是否有新的开发呢?如果它没有出现问题,就不要修理它。 - Elie

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