Java GUI框架。选择什么Swing,SWT,AWT,SwingX,JGoodies,JavaFX,Apache Pivot?

问题:

有很多关于java的gui框架,但是什么被认为是今天的选择框架?
以下是我对不同框架的理解,如果我错了,请纠正我。这是一个非常宽松的问题集,但是我仍然认为,对于任何想要创建富贵应用程序的人来说,都是有价值的。
 
是摆动的基础,它表现不错,但缺乏先进的组件。如果您打算创建丰富的应用程序,AWT可能不是要走的路。但是对于不需要丰富用户界面的较小的gui应用程序。这可能是完美的,因为它是一个经过验证的框架。
 
基于AWT,如前所述。在它的初期,它被认为是缓慢而且越来越多,导致IBM为Eclipse创建SWT。然而使用Java 5(或6?)Swing成为构建新应用程序的首选框架。 Swing有很多丰富的组件,但在某些方面仍然缺乏。一个例子是没有一个功能齐全的TreeTable组件可以进行排序和过滤/搜索。
 
由IBM为Eclipse创建,他们似乎认为Swing当时不适合Eclipse。它本身是相当低级的,它通过JNI使用平台的本机部件。它与Swing和AWT无关。然而,他们的API有些笨拙并且不直观。他们确实有一些高级组件像TreeTable。 (但我不认为他们支持排序和过滤开箱即用)。 SWT使用一些本机绑定(通过JNI?),互联网上的咆哮是这个框架不应该在今天的项目中使用。 (为什么不?)
 
基于Swing,它的任务是创建丰富的组件来摆动。还在开发中(不是非常活跃。)有一个非常好的组件,例如TreeTable。但是据我所知,TreeTable不支持过滤和排序。然而,它支持高亮搜索。

请注意,SwingX是作为现有Swing组件的扩展或组合的组件(AFAIU)

 JGoodies数据
我一无所知的一个框架…它的优点和缺点是什么?除了其他的东西,Jgoodies是什么?

JGoodies OTOH是关于PLAF和布局。

 
最新的Java / Oracle旗舰。有望成为开发丰富的桌面或Web应用程序的事实标准。
 
它使用Java2D渲染UI,从而最大限度地减少(IMO,blo肿)Swing和AWT的遗留物的影响。 (@Augustus Thoo)
它的主要焦点似乎是RIA(丰富的互联网应用程序),但它似乎也可以应用于桌面应用程序。作为个人评论,看起来很有趣!我特别喜欢这是一个apache项目。
 https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
 
用c / c ++编写的本机qt库的java包装器。非常强大,广泛使用和接受。有很多GUI组件和易于使用的API。
 http://qt-jambi.org/
所以,尝试总结一下什么是问:
说我今天想在Java中创建一个桌面应用程序,它涉及到很多高级组件,我应该选择什么?为什么?
这些框架中的哪一个应该被承认为不赞成的,应该被认为是遥远未来的框架?
什么是今天的事实上的标准框架,以及您使用哪些工具来创建java gui应用程序?
我可能会后悔这个,但不好意思:
C#/ .Net据说有一套非常好的易于使用的组件,可以在各个方向上弯曲。并且在某种程度上调查了不同的java框架之后,我似乎对Java也没有这么说。为什么是这样? Why doesn’t java (which is the most widely used programming language in the world) have the same set of GUI components?
它只是因为java已经将gui组件基于较低级别,并且可以编写所有这些需要寻找的高级组件,但是如果不是所有的工作都需要做很多工作呢?

回答:

决策树:

  1. 像Qt和SWT这样的框架需要本机DLL。所以你必须问自己:是否支持所有必要的平台?您可以使用应用程序打包本机DLL吗?
     See here, how to do this for SWT
    如果你在这里有选择,你应该更喜欢Qt over SWT。 Qt是由熟悉UI和桌面的人开发的,而SWT已经被开发出来,不足以使Eclipse更快。对于Java 1.4而言,它更像是一个UI界面的性能补丁。没有JFace,您会丢失许多主要的UI组件或UI组件的非常重要的功能(例如对表进行过滤)。
    如果SWT缺少您需要的功能,则该框架对扩展它有些敌意。例如,您不能扩展任何类(类不是最终的,它们只是在this.getClass()的包不是org.eclipse.swt时抛出异常,并且您不能在该包中添加新类,因为它是签)。
  2. 如果您需要一个本机的纯Java解决方案,那么可以让您休息。我们从AWT,Swing,SwingX开始 – 摇摆的方式。
    AWT已经过时了。 Swing已经过时了(在过去10年里,Swing可能没有太多的工作,但并没有太多的工作)。你可以认为Swing开始是很好的,但是我们都知道代码是乱码。这对于UI来说尤其如此。
    这让你与SwingX。经过较长时间的缓慢进展,development has picked up again。 Swing的主要缺点是它挂在一些15年前非常流行的旧想法,但今天感觉“笨拙”。例如,表视图支持过滤和排序,但您仍然必须配置此视图。您将不得不编写大量的锅炉板代码,以获得一个体面的UI感觉现代。
    另一个弱点是主题。截至今天,有很多主题。 See here for a top 10。但有些是慢的,有的是错车,有些是不完整的。当我写一个UI时,我讨厌它,用户抱怨某些东西不适合他们,因为他们选择了一个奇怪的主题。
  3. JGoodies是Swing之上的另一层,就像SwingX。它试图让Swing更加愉快的使用。网站看起来不错。让我们看看教程… hm …仍在搜索…挂起来看来网站上没有任何文件。 Google to the rescue。不,没有任何有用的教程。
    我对UI框架感到不自信,该框架尝试从潜在的新粉丝中隐藏文档。这不意味着JGoodies是坏的;我只是找不到什么好说的,但它看起来不错。
  4. JavaFX的。很好,时尚。支持在那里,但我觉得它比一个严重的UI框架更像是一个闪亮的玩具。这种感觉源于缺乏复杂的UI组件,如树表。有一个webkit-based component to display HTML
    当我介绍的时候,我的第一个想法是“五年过晚了”。如果你的目标是一个很好的应用程序的手机或网站,好的。如果您的目标是专业的桌面应用程序,请确保它提供您所需要的。
  5. 枢。我第一次听说过。它基本上是一个基于Java2D的新的UI框架。所以我昨天试了一下。没有摆动,只是微小的AWT(new Font(...))。
    我的第一印象是一个很好的印象。有一个广泛的文档可以帮助您开始使用。大多数examples come with live demos(注意:您必须在Web浏览器中启用Java,this is a security risk),因此您可以并发查看代码和生成的应用程序。
    在我的经验中,更多的努力进入代码而不是文档。通过查看数据透视文档,必须付出很多努力才能进入代码。请注意,目前有一个错误可以防止某些示例在浏览器中运行(PIVOT-858)。
    我对Pivot的第二印象是它很容易使用。当我遇到问题时,通常可以通过一个例子来快速解决问题。虽然我缺少每个组件支持的所有样式的引用。
    与JavaFX一样,它缺少一些较高级别的组件,如树表组件(PIVOT-306)。我没有尝试使用表视图进行延迟加载。我的印象是,如果底层模型使用延迟加载,那就够了。
    有希望。如果可以的话,试试看。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java GUI frameworks. What to choose? Swing, SWT, AWT, SwingX, JGoodies, JavaFX, Apache Pivot?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

71 − = 67