我是一名Web开发人员,正在考虑构建我的第一个真正的桌面应用程序。我们的想法是构建一个工具,在没有API的Web应用程序中自动执行非常重复的任务。
我知道我想使用Java。我之前使用它来获取Web内容,非常了解语法并希望应用程序尽可能简单地交叉平台。
我不确定是否应该使用SWT或Swing。由于我的主要受众使用Windows,我希望尽可能将其视为本机。 Linux和Mac应该可以工作,但外观在这里并不那么重要。
那么支持和反对每个UI框架,Swing或SWT的参数是什么?
感谢。
PS:我使用Eclipse在Windows上开发。但是考虑和Netbeans一起玩。
答案 0 :(得分:150)
优点摆动:
Cons Swing:
优点SWT:
缺点SWT:
答案 1 :(得分:63)
需要考虑的一件重要事情是,某些用户和某些经销商(Dell)在其64位Windows上安装了64位虚拟机,而您无法在32位和64位虚拟机上使用相同的SWT库。
这意味着您需要根据用户是使用32位还是64位Java VM来分发和测试不同的软件包。例如,请参阅使用Azureus的this problem,但您也可以使用Eclipse,其中截至今天,前端下载页面上的版本不能在64位VM上运行。
答案 2 :(得分:23)
职业摇摆:
但在底线我不建议使用'纯'摇摆或swt ;-) 有几个应用程序框架可用于摆动/ swt输出。 Look here。 最大的玩家是netbeans(swing)和eclipse(swt)。另一个不错的框架可能是griffon,一个很好的'组件'是pivot(swing)。 Griffon非常有趣,因为它集成了很多库和not only swing;还有枢轴,swt等
答案 3 :(得分:13)
我会使用Swing有几个原因。
它已经存在了很长时间 更多的开发工作应用于 它。因此它可能更具特色 完成并且(可能)有更少的错误。
有很多文档和 关于生产的其他指导 高性能应用程序。
如果要构建功能丰富的应用程序,可能需要查看NetBeans RCP(富客户端平台)。有一个学习曲线,但你可以通过一些练习快速组合好的应用程序。我没有足够的Eclipse平台经验来做出有效判断。
如果您不想使用整个RCP,NetBeans还有许多有用的组件,可以单独提取和使用。
另一个建议是,查看不同的布局管理器。在我学习的时候,他们绊了我很长时间。一些最好的甚至不在标准库中。 MigLayout(适用于Swing和SWT)和JGoodies表单工具是我认为最好的两种工具。
答案 4 :(得分:10)
我会选择swing只是因为它是java的“原生”。
另外,请查看http://swingx.java.net/。
答案 5 :(得分:8)
根据您的要求,听起来最重要的是使用Swing,因为它稍微容易入手,而不是像SWT那样与原生平台紧密集成。
挥杆通常是一个安全的选择。
答案 6 :(得分:6)
有趣的问题。我不太了解SWT(不像Swing和AWT),但这里是SWT / Swing / AWT的比较。
这里有一个网站,您可以在这里获得关于SWT的基本知识(http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm)
希望你做出正确的决定(如果编码中有正确的决定)......: - )
答案 7 :(得分:4)
如果您计划构建具有多个功能的完整功能应用程序,我建议您直接使用Eclipse RCP作为框架。
如果您的应用程序不会变得太大或者您的要求太过独特而无法通过正常的业务框架处理,那么您可以安全地使用Swing进行跳转。
在一天结束时,我建议你尝试两种技术,找到最适合你的技术。就像Netbeans vs Eclipse vs IntelliJ一样,这里没有绝对正确的答案,两个框架都有各自的缺点。
Pro Swing:
Pro SWT:
答案 8 :(得分:4)
要考虑的一件事:屏幕阅读器
由于某些原因,使用屏幕阅读器(以及适用于Windows的Java AccessBridge)时,某些Swing组件无法正常工作。知道不同的屏幕阅读器会导致不同的行为。根据我的经验,SWT-Tree与Swing-Tree结合使用屏幕阅读器的效果要好得多。因此,我们的应用程序最终使用了SWT和Swing组件。
为了分发和加载正确的SWT库,您可能会发现此链接很有用: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191
答案 9 :(得分:3)
SWT的创建是为了回应世纪之交Swing的萧条。既然性能上的差异变得可以忽略不计,我认为Swing对于您的标准应用程序来说是更好的选择。 SWT / Eclipse有一个很好的框架,可以帮助处理大量的锅炉板代码。