现在选择哪种 Java GUI 框架?[已关闭]

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

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

我一直是一个快乐的swing用户,但Sun似乎正在推动wing弃用,同时推动Javafx,Javafx还没有准备好进入黄金时段。

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

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

编辑:Sun已经取消了swingx项目。从论坛上对 http://swingx.dev.java.net 的评论来看,以前从事核心摇摆工作的大多数Sun资源现在都在全职开发JavaFx。


答案 1

我认为,尽管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 是最佳选择。


答案 2

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

Swing在过去10年中没有发展,错误没有修复,开发已经停止,有利于JavaFX,所以你也不会看到任何新功能。JavaFX可能看起来很棒,但它仍然是蒸汽软件,它是由那些让Swing饿死的人制作的,所以我没有花任何钱。

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


推荐