现在选择哪个Java GUI框架?

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

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

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

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

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

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

我认为,尽管Sun的管理不善,但Swing仍然是一个优秀的框架。 你可以用它做很多事情,特别是如果那个“很多”涉及自定义渲染的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是最佳选择。

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

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

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

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

Interesting Posts