有很多针对Java的gui框架,但是公认的当今选择框架是什么?
以下是我对不同框架的理解,如果我错了,请指正。这是一组定义很松散的问题,但是我仍然认为这对任何想创建丰富的GUI应用程序的人都非常有价值。
AWT
是挥杆的基础,它表现良好,但缺少高级组件。如果你打算创建丰富的应用程序,那么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是组件(AFAIU),是现有Swing组件的扩展或组成
JGoodies
一个我一无所知的框架…它的优点和缺点是什么?Jgoodies与其他产品有什么不同?
JGoodies OTOH与PLAF和布局有关。
JavaFX
Java / Oracle的最新旗舰。有望成为开发丰富桌面或Web应用程序的事实标准。
Apache Pivot
它使用Java2D渲染UI,从而最大程度地减少了Swing和AWT的(IMO,肿的)遗产影响。(@Augustus Thoo)
它的主要焦点似乎在RIA(丰富的Internet应用程序)上,但是它似乎也可以应用于桌面应用程序。作为个人评论,看起来非常有趣!我特别喜欢这是一个Apache项目。
Qt Jambi
用c / c ++编写的本地qt库的Java包装器。非常强大,被广泛使用并被接受。具有大量的GUI组件和易于使用的API。
因此,尝试总结一下我在问什么:
假设我今天想用Java创建一个包含许多高级组件的桌面应用程序,我应该选择什么?又为什么呢?
这些框架中的哪一个应该被认为已过时,哪些应该被认为是遥远的未来?
当今的事实上的标准框架是什么?你使用哪些工具来创建Java GUI应用程序?
我可能会后悔提出这个问题,但还是不愿意尝试:
据说C#/。Net具有一组非常好用的组件,可以在各个方向上灵活应用。在某种程度上研究了不同的Java框架之后,我似乎对Java并没有说同样的话。为什么是这样?为什么Java(世界上使用最广泛的编程语言)没有相同的GUI组件集?
难道Java只是在较低的基础上提供了gui组件,是否有可能编写我正在寻找的所有这些高级组件,但是你必须自己做很多(如果不是全部的话)工作?