现在选择哪个Java GUI框架?

时间:2008-11-11 16:14:57

标签: java user-interface cross-platform gui-toolkit

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

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

我一直是一个快乐的摇摆用户,但是Sun似乎推动摆动来推销,同时推动 Javafx ,这还没有为黄金时间做好准备。

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

您选择的Gui库/框架是什么?

编辑:Sun取消了 swingx 项目。来自论坛http://swingx.dev.java.net的评论看起来像以前在核心摇摆方面工作的大部分Sun资源现在正在全职开发JavaFx。

3 个答案:

答案 0 :(得分:7)

我认为尽管Sun管理不善,但Swing仍然是一个优秀的框架。你可以用它做 lot ,特别是如果那个“很多”涉及自定义渲染的UI控件。如果您的应用程序需要品牌的LAF,或者甚至只需要一些复杂的自定义控件,Swing就是您想要的。

另一方面,我非常喜欢SWT。它得到了一个糟糕的说唱,因为每个人都认为这是IBM接管Java的伎俩,但它实际上只是另一个与Swing完全互补的UI框架。我不建议使用SWT进行超复杂的图形渲染(特别是:合成)或创建非常简单的自定义控件,但对于其他一切,它实际上是花花公子。由于依赖于位掩码和用户管理的事件调度循环之类的东西,API本身受到了很多批评,但是一旦你习惯它们,大多数事情都是非常透明的。组件本身比Swing简单得多(在可扩展性和类似方面),这意味着API可以按比例简单。我实际上可以记住如何在SWT中创建和填充表格;而在没有谷歌帮助的情况下,我认为我没有曾经处理过Swing。

目前SWT最大的问题是稳定版本依赖于Mac OS X上的Carbon。这意味着SWT应用程序只能在Java 5上运行32位(或在SoyLatte上运行32位)。至于其他平台,SWT在Windows(Vista和XP)上非常出色,在GTK Linux上几乎同样出色。我(最近没有)在Linux上有SWT的任何问题,所以我有点惊讶你会把它当作一个痛点。

回到你的问题:这一切都取决于你的应用程序需要什么。如果它是一个华丽的定制风格的应用程序,具有大量的自定义控件和复杂的合成,Swing是城里唯一的游戏。但是,如果更简单的API对您来说更重要,或者您的用户需要最终的平台LAF保真度,那么SWT是最佳选择。

答案 1 :(得分:4)

现在,我正在使用SWT或Qt(Jambi)。

Swing并没有在最后发展,比如10年,错误没有得到修复,开发已经停止了JavaFX,所以你也不会看到任何新功能。 JavaFX可能看起来很棒,但仍然是蒸发器,它是由让Swing饿死的人制造的,所以我不会在上面投入任何资金。

在SWT和Qt之间,我更喜欢使用Qt,因为它是一个非常成熟和强大的框架,由知道他们正在做什么的人(好吧,大部分时间都是:) :)和SWT(如果新项目的许可证)与Qt不兼容。

答案 2 :(得分:3)

我仍然使用Swing,并将继续这样做,直到它完全不再受支持为止。感谢关于Javafx的提醒,我现在必须调查那个。