有很多Java GUI框架,但哪个是当今被认为是首选的框架?
以下是我对不同框架的理解,请纠正我如果我错了。这是一组非常宽泛的问题,但我仍然认为对于任何想创建丰富GUI应用程序的人来说都是有价值的。
是 Swing 的基础,它表现良好,但缺乏高级组件。如果您想创建丰富的应用程序,可能不适合使用 AWT。然而,对于不需要丰富用户界面的较小 GUI 应用程序,这可能非常适合,因为它是一个经过验证的框架。
Swing基于AWT,早期被认为速度慢且存在缺陷,导致IBM为Eclipse创建了SWT。但是随着Java 5(或6?)的出现,Swing成为构建新应用程序的首选框架。Swing有许多丰富的组件,但在某些方面仍然缺乏,例如没有完整功能的TreeTable组件,无法进行排序和过滤/搜索。
SWT是由IBM为Eclipse创建的,他们似乎认为当时Swing不适合用于Eclipse。它本身相当低级,并且通过JNI使用平台的本地小部件。它与Swing和AWT没有任何关系。然而,它们的API有些笨拙且不直观。它们确实有一些高级组件,如TreeTable(但我认为它们不支持开箱即用的排序和过滤)。SWT使用一些本地绑定(通过JNI?),在互联网上对这个框架的抱怨是它不应该在今天的项目中使用。(为什么不呢?)
SwingX基于Swing,旨在为Swing创建丰富的组件。目前仍在开发中(尽管不是非常活跃)。它拥有非常好的一套组件,例如TreeTable。但据我所知,TreeTable不支持过滤和排序。但它支持带有高亮的搜索。
请注意,SwingX是现有Swing组件的扩展或组合组件
JGoodies
这是一个我不了解的框架...它的优势和劣势是什么?JGoodies与其他框架有何不同之处?
另一方面,JGoodies专注于PLAF和布局。
JavaFX是Java/Oracle的最新旗舰产品,承诺成为开发丰富的桌面或Web应用程序的事实标准。
Apache Pivot使用Java2D来呈现UI,从而最小化Swing和AWT(在我看来过于臃肿)的影响。(@Augustus Thoo)
它的主要重点似乎是RIA(富互联网应用程序),但它似乎也可以应用于桌面应用程序。作为个人评论,看起来非常有趣!我特别喜欢它是一个apache项目。
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
Qt Jambi是一个Java包装器,用于本地C / C ++编写的Qt库。非常强大,广泛使用和受欢迎。具有许多GUI组件和易于使用的API。
因此,为了尝试总结一下我所问的问题:
假设我今天想在Java中创建一个涉及许多高级组件的桌面应用程序,我应该选择什么?为什么?
这些框架中哪些应该被认为是过时的,哪些应该被认为是遥远未来的框架?
今天的事实标准框架是什么,您使用哪些工具来创建Java GUI应用程序?
我可能会后悔问这个问题,但我还是要试一试:
C#/.Net被认为拥有一套非常好用的易于使用的组件,可以在各种方向上灵活运用。经过对不同Java框架的一定调查后,我似乎无法说Java也具备相同的特点。为什么呢?为什么Java(世界上使用最广泛的编程语言)没有相同的GUI组件集?
难道只是因为Java将其GUI组件基于更低的级别,因此可能需要自己动手编写所有这些高级组件,而无法像C#/.Net那样轻松实现吗?