net*_*ain 228 java user-interface swing swt awt
java有很多gui框架,但是什么被认为是今天的选择框架?
以下是我对不同框架的理解,如果我错了请纠正我.这是一个非常松散定义的问题集,但我仍然认为它对于任何想创建丰富的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是组件(AFAIU),它们是现有Swing组件的扩展或组合
JGoodies数据
我一无所知的框架......它的优点和缺点是什么?Jgoodies与其他人的区别是什么?
JGoodies OTOH是关于PLAF和布局的.
Java/Oracle的最新旗舰产品.承诺成为开发富桌面或Web应用程序的事实标准.
它使用Java2D呈现UI,从而最小化Swing和AWT的(IMO,膨胀)遗产的影响.(@Augustus Thoo)
它的主要焦点似乎是RIA(富互联网应用程序),但似乎它也可以应用于桌面应用程序.而作为个人评论,看起来很有趣!我特别喜欢它是一个apache项目.
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
本机qt库的java包装器,用c/c ++编写.非常强大,广泛使用和接受.有很多GUI组件和易于使用的API.
所以,试着总结一下我要问的一点:
说我想用Java创建一个桌面应用程序,它涉及许多高级组件,我应该选择什么?为什么?
哪些框架应被视为已弃用,哪些框架应被视为遥远未来的框架?
什么是今天的事实标准框架,您使用哪些工具来创建Java gui应用程序?
我可能会后悔问这个,但不管怎么说都不好意思:
据说C#/ .Net有一套易于使用的组件,可以在各个方向上进行弯曲.在调查了不同的java框架之后,我似乎无法对Java说同样的话.为什么是这样?为什么java(世界上使用最广泛的编程语言)没有相同的GUI组件集?
难道只是java已经将gui组件基于更低的级别,并且可以编写我正在寻找的所有这些高级组件,但是如果不是所有的工作,你必须做很多事情吗?
Aar*_*lla 79
决策树:
像Qt和SWT这样的框架需要本机DLL.所以你必须问自己:是否支持所有必要的平台?你可以用您的应用程序打包本机DLL吗?
如果你在这里有一个选择,你应该更喜欢Qt而不是SWT.Qt是由了解UI和桌面的人开发的,而SWT的开发是为了使Eclipse更快.它更像是Java 1.4的性能补丁,而不是UI框架.如果没有JFace,您将缺少许多主要UI组件或UI组件的非常重要的功能(例如对表进行过滤).
如果SWT缺少您需要的功能,则该框架对扩展它有点不利.例如,你不能把它扩展任何类(类不是最终,他们只是抛出异常时的包this.getClass()是不是org.eclipse.swt因为它的签署,你不能在包中添加新的类).
如果您需要原生的纯Java解决方案,那剩下的就剩下了.让我们从AWT,Swing,SwingX开始 - Swing方式.
AWT已经过时了.Swing已经过时(可能不那么严重,但过去10年来Swing的工作并不多).你可以说Swing很开始,但我们都知道代码会腐烂.对于今天的UI来说尤其如此.
这让你有了SwingX.经过较长时间的缓慢进展,发展再次回升.Swing的主要缺点在于它依赖于一些古老的想法,这些想法在15年前非常流行,但今天感觉"笨拙".例如,表视图确实支持过滤和排序,但您仍需要配置它.您必须编写大量的锅炉板代码才能获得一个感觉现代的体面UI.
另一个薄弱的领域是主题.截至今天,围绕着很多主题.在这里看到前10名.但有些是慢的,有些是马车,有些是不完整的.当我写一个用户界面并且用户抱怨某些东西不适合他们因为他们选择了一个奇怪的主题时,我讨厌它.
JGoodies是Swing之上的另一层,就像SwingX一样.它试图使Swing更加愉快.该网站看起来很棒.我们来看看教程......嗯...还在搜索......坚持下去.似乎网站上根本没有文档.谷歌救援.不,没有有用的教程.
对于一个非常难以隐藏潜在新粉丝文档的UI框架,我并不自信.这并不意味着JGoodies很糟糕; 我只是找不到任何好的说法,但它看起来不错.
JavaFX的.很棒,很时尚.支持是存在但我觉得它更像是一个闪亮的玩具而不是一个严肃的UI框架.这种感觉源于缺乏像树表这样复杂的UI组件.有一个基于webkit的组件来显示HTML.
当它被引入时,我的第一个想法是"五年太晚了".如果你的目标是一个很好的手机或网站应用程序,那么好.如果您的目标是专业的桌面应用程序,请确保它提供您所需的.
枢.我第一次听说了.它基本上是一个基于Java2D的新UI框架.所以昨天我试了一下.没有Swing,只是一小部分AWT(new Font(...)).
我的第一印象是一个很好的.有一个广泛的文档可以帮助您入门.大多数示例都附带了实时演示(注意:您必须在Web浏览器中启用Java; 这是一种安全风险),因此您可以并排查看代码和生成的应用程序.
根据我的经验,代码而不是文档需要付出更多努力.通过查看Pivot文档,必须付出很多努力才能进入代码.请注意,目前存在一个错误,可以阻止某些示例在您的浏览器中运行(PIVOT-858).
我对Pivot的第二印象是它易于使用.当我遇到问题时,我通常可以通过查看示例来快速解决问题.我错过了每个组件支持的所有样式的引用.
与JavaFX一样,它缺少一些更高级别的组件,如树表组件(PIVOT-306).我没有尝试使用表格视图进行延迟加载.我的印象是,如果底层模型使用延迟加载,那就足够了.
有希望.如果可以的话,试一试.
Zso*_*rök 12
SWT本身非常低级,它通过JNI使用平台的本机小部件.它根本与Swing和AWT无关.在Eclipse的IDE和所有基于Eclipse的富客户端应用,像Vuze的BitTorrent客户端,使用SWT构建.此外,如果您正在开发Eclipse插件,通常会使用SWT.
我已经开发了基于Eclipse的应用程序和插件近5年了,所以我显然有偏见.但是,我在使用SWT和基于它的JFace UI工具包方面也有丰富的经验.我发现JFace非常富有和强大; 在某些情况下,它甚至可能是选择SWT的主要原因.它使您能够非常快速地启动工作UI,只要它像IDE一样(包括表,树,本机控件等).当然,您也可以集成自定义控件,但这需要额外的努力.
我想建议另一个框架:Apache Pivot http://pivot.apache.org/.
我简单地试了一下,并对它作为RIA(富互联网应用程序)框架ala Flash 提供的内容印象深刻.
它使用Java2D呈现UI,从而最小化Swing和AWT的(IMO,膨胀)遗产的影响.
我的个人观点:与NetBeans平台一起去Swing.
如果您需要高级组件(超过NetBeans提供),您可以轻松地集成SwingX而不会出现问题(或JGoodies),因为NetBeans平台完全基于Swing.
如果没有一个构建在底层UI框架上的优秀平台,我就不会启动一个大型桌面应用程序(或者一个会变大的桌面应用程序).
另一个选项是SWT和Eclipse RCP,但是将"纯"Swing组件集成到这样的应用程序中更难(尽管不是不可能).
NetBeans平台的学习曲线有点陡峭(尽管我认为Eclipse也是如此)但是我会强烈推荐一些好书.
| 归档时间: |
|
| 查看次数: |
604766 次 |
| 最近记录: |