Java 桌面应用程序:SWT 与 Swing [已关闭]

2022-08-31 07:20:29

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

我知道我想使用Java。我以前用它来做Web的东西,非常了解语法,并希望应用程序尽可能轻松地跨平台。

我不太确定的地方是我应该使用SWT还是Swing。由于我的主要受众使用Windows,因此我希望在那里尽可能地将其视为本机。Linux和Mac应该可以工作,但外观在这里并不那么重要。

那么,支持和反对每个UI框架,Swing或SWT的论据是什么?

谢谢。

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


答案 1

优点挥杆:

  • Java库的一部分,不需要额外的原生库
  • 在所有平台上以相同的方式工作
  • Netbeans 和 Eclipse 中的集成 GUI 编辑器
  • Sun/Oracle的优秀在线教程
  • 由官方java扩展(如java OpenGL)支持

缺点摆动:

  • 本机外观和感觉的行为可能与真正的本机系统不同。
  • 重型部件(本机/awt)隐藏了摆动部件,大多数时候不是问题,因为使用重型部件相当罕见

优点:

  • 尽可能使用本机元素,因此始终使用本机行为
  • 支持 eclipse,gui 编辑器 VEP(VEP 也支持 Swing 和 AWT)
  • 在线大量示例
  • 具有集成的awt/swt桥接器,允许使用awt和回转组件

缺点 SWT:

  • 每个受支持的系统都需要本机库
  • 由于使用了本机资源,可能无法支持所有系统上的所有行为(提示选项)
  • 管理本机资源,而本机组件通常将与其父级一起释放其他资源(如字体)必须手动释放或注册为组件的释放侦听器以进行自动释放。

答案 2

需要考虑的重要一点是,某些用户和某些经销商 (Dell) 在其 64 位 Windows 上安装了 64 位 VM,并且不能在 32 位和 64 位 VM 上使用相同的 SWT 库。

这意味着您需要根据用户使用的是 32 位还是 64 位 Java VM 来分发和测试不同的包。例如,在Azureus上看到这个问题,但是在Eclipse上也有这个问题,截至今天,前端下载页面上的构建版本无法在64位VM上运行。


推荐