Java Swing-to-SWT转换:哪些缺点?

Java Swing-to-SWT转换:哪些缺点?,java,swing,swt,port,Java,Swing,Swt,Port,我们正在考虑将我们的Swing应用程序移植到SWT/JFace,以获得更自然的外观、更高的UI呈现速度和更少的bug 有没有人已经做了这样一个端口,并希望分享一些信息,特别是我们应该期待的缺点?提前谢谢 PS:也许这应该是一个维基,因为接受一个作为最终答案是没有意义的。根据我的经验: SWT并非适用于所有平台。确保所有目标平台均受支持 修复SWT中的bug比修复Swing中的bug要困难得多:SWT中的大多数类都是最终类,或者在构造函数中包含恶意检查,以确保没有人扩展它们,包是经过签名的(因此

我们正在考虑将我们的Swing应用程序移植到SWT/JFace,以获得更自然的外观、更高的UI呈现速度和更少的bug

有没有人已经做了这样一个端口,并希望分享一些信息,特别是我们应该期待的缺点?提前谢谢

PS:也许这应该是一个维基,因为接受一个作为最终答案是没有意义的。

根据我的经验:

  • SWT并非适用于所有平台。确保所有目标平台均受支持

  • 修复SWT中的bug比修复Swing中的bug要困难得多:SWT中的大多数类都是最终类,或者在构造函数中包含恶意检查,以确保没有人扩展它们,包是经过签名的(因此不能简单地替换类),到目前为止,我尝试了几次从源代码编译SWT-,但都失败了。在StackOverflow上有47K点,可以想象我应该能够编译Java代码

  • Swing有很多自定义组件,SWT只有不太活跃的ProjectNebula。虽然可以混合使用Swing和SWT组件,但这不适合心脏虚弱的人


PS:我仍然更喜欢SWT而不是Swing:-)

我目前正在编写的应用程序中做同样的事情。缺少对Swing小部件的本地支持——甚至是适当的“模拟”——让我非常沮丧。我在开发时使用Ubuntu(因此也使用Gnome),我立即注意到一些简单的下拉菜单在Swing中完全不正确地呈现,但在SWT中效果很好(在Swing中,它们周围没有边框,禁用的菜单项呈现方式与其他方式完全不同)

除了必须完全重写“视图”类这一事实之外,没有任何巨大的障碍需要克服,这可能是您所期望的

当你说SWT时,如果你正在实现的特性需要,你可能还应该包括JFace和RCP。可能是的


最后一条建议:不要把两者混为一谈。你会后悔的。您的下一个版本应该是Swing或SWT——如果您尝试将两者互操作,您将遇到严重的错误,这将导致您失去客户机。

关于SWT中的错误:是否存在对最终用户有(重大)影响的错误?我记得Swing中有几个我们经常被报告的bug,例如,当用户切换Windows主题时,应用程序正在使用Windows外观。SWT的大多数问题都来自缺少功能。据我所知,SWT实现了Windows、MacOS和GTK的最小公共子集——如果您需要在Windows上工作但在Linux上没有实现的东西,您就不能使用它。最后,这取决于你的应用程序需要什么。如果它只是一个无聊的数据输入应用程序,你应该会没事的。如果您想要更像Web 2.0的东西,这可能会很棘手。我们不打算在最终产品中同时使用Swing和SWT,但如果它能帮助我们减少无法编译的时间,那么我们更希望它作为中间步骤。