Java桌面应用程序:SWT与Swing

Java桌面应用程序:SWT与Swing,java,swing,swt,Java,Swing,Swt,我现在是一名web开发人员,正在考虑构建我的第一个真正的桌面应用程序。其想法是构建一个工具,在没有API的web应用程序中自动执行非常重复的任务 我知道我想使用Java。我以前在web应用程序中使用过它,非常熟悉语法,希望应用程序能够尽可能简单地跨平台 我不确定的是我应该使用SWT还是Swing。由于我的主要受众使用Windows,我希望在那里尽可能让它看起来像本地人一样。Linux和Mac应该可以工作,但外观在这里并不重要 那么,支持和反对每个UI框架(Swing或SWT)的理由是什么 谢谢

我现在是一名web开发人员,正在考虑构建我的第一个真正的桌面应用程序。其想法是构建一个工具,在没有API的web应用程序中自动执行非常重复的任务

我知道我想使用Java。我以前在web应用程序中使用过它,非常熟悉语法,希望应用程序能够尽可能简单地跨平台

我不确定的是我应该使用SWT还是Swing。由于我的主要受众使用Windows,我希望在那里尽可能让它看起来像本地人一样。Linux和Mac应该可以工作,但外观在这里并不重要

那么,支持和反对每个UI框架(Swing或SWT)的理由是什么

谢谢


PS:我使用Eclipse在Windows上开发。但是我正在考虑使用Netbeans。

对于您的需求来说,似乎底线是使用Swing,因为它开始使用起来稍微容易一些,并且不像SWT那样与本机平台紧密集成


挥杆通常是一种安全的赌注。

有趣的问题。我不太了解SWT,所以不能吹嘘它(不像Swing和AWT),但这里是对SWT/Swing/AWT的比较

这是一个网站,你可以在这里获得关于SWT的任何基本教程()


希望您做出正确的决定(如果在编码方面有正确的决定)…:-)

我会选择swing,因为它是java的“本机”


另外,请看一看。

职业挥杆:

  • 作为java库的一部分,不需要 其他本机库
  • 在所有平台上的工作方式相同
  • Netbeans和Eclipse中集成的GUI编辑器
  • Sun/Oracle提供的优秀在线教程
  • 由官方java扩展(如java OpenGL)支持
Cons Swing:

  • 本地的外观和感觉可能会表现出 与真正的本地人不同 系统
  • 重型组件(本机/awt)隐藏swing组件,这在大多数情况下都不是问题,因为使用重型组件的情况非常罕见
专业SWT:

  • 尽可能使用本机元素,因此始终使用本机行为
  • 受eclipse支持的gui编辑器VEP(VEP还支持Swing和AWT)
  • 网上有大量的例子
  • 具有集成awt/swt桥接器,允许使用awt和swing组件
Cons SWT:

  • 每种类型都需要本机库 支撑系统
  • 由于本机原因,可能不支持所有系统上的所有行为 使用的资源(提示选项)
  • 管理本机资源,而本机组件通常会与其父级一起释放,其他资源(如字体)必须手动释放或注册为组件的dispose listener以自动释放

要考虑的是,一些用户和一些转售商(戴尔)在他们的64位Windows上安装了一个64位的VM,而在32位和64位VM上不能使用相同的SWT库。


这意味着您需要根据用户是使用32位还是64位Java虚拟机来分发和测试不同的包。例如,在Azureus中可以看到,但在Eclipse中也可以看到,从今天起,首页下载页面上的构建并没有在64位VM上运行

如果您计划构建一个功能齐全的应用程序,其中包含多个特性,我建议您直接使用EclipseRCP作为框架

如果您的应用程序不会变得太大,或者您的需求太独特,无法由正常的业务框架处理,那么您可以安全地使用Swing

最后,我建议您尝试这两种技术,以找到更适合您的技术。就像Netbeans vs Eclipse vs IntelliJ一样,这里没有绝对正确的答案,两种框架都有各自的缺点

职业秋千:

  • 更多专家
  • 更像Java(几乎没有公共字段,不需要在资源上进行处理)
专业SWT:

  • 更多操作系统本机
  • 更快

    • 我之所以使用Swing,有几个原因

      • 它已经存在了更长的时间,并且 更多的开发工作应用于 信息技术因此,它可能更具特色 完整并且(可能)有更少的bug

      • 有很多文档和文档 关于生产的其他指导 性能应用

      • 看来 像Swing传播到的更改一样 所有平台同时运行,同时 SWT的更改似乎出现在屏幕上 首先是Windows,然后是Linux
      如果您想构建一个功能非常丰富的应用程序,您可能需要查看(富客户机平台)。有一个学习曲线,但你可以通过一点练习快速组合好的应用程序。我没有足够的Eclipse平台经验来做出正确的判断

      如果您不想使用整个RCP,NetBeans还有许多有用的组件,可以单独取出和使用

      另一个建议是,研究不同的布局管理器。我学习的时候,他们把我绊倒了很长一段时间。一些最好的甚至不在标准库中。(对于Swing和SWT)和Forms工具是我认为最好的两个工具。

      pro Swing:

      • swing IMHO的最大优点是,您不需要随应用程序一起提供库(这样可以避免十几MB(!)
      • 与早期相比,swing的本地外观和感觉要好得多
      • 性能与swt相当(swing不慢!)
      • NetBeans提供了Matisse作为舒适的组件生成器
      • JavaFX中Swing组件的集成更容易
      但归根结底,我不建议使用“纯”swing或swt;-) swing/swt out有几个应用程序框架。 最大的参与者是netbeans(swing)和eclipse(swt)。另一个不错的框架可以是griffon,一个不错的“组件集”是pivot(swing)。格里芬很有趣