我有一个非常大的程序,目前正在使用SWT。该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序。 现在SWT有点老了我想切换到Swing或JavaFX。我想听听你对三件事的看法。
我主要关心的是桌面GUI应用程序会有什么好处? (我在网上看了很多人都认为JavaFX和Swing一样好,但除了简单的意见火焰战争之外我没有看到很多有效的论据)。它必须适用于Windows,Mac和一些流行的Linux发行版。
什么更干净,更容易维护?
从头开始构建什么会更快?
我在我的应用程序中使用MVC方法,如果有任何帮助的话。
答案 0 :(得分:147)
什么更干净,更容易维护?
所有条件都相同,可能是JavaFX - API在各个组件之间更加一致。但是,这更多地取决于如何编写代码而不是使用哪个库来编写代码。
从头开始构建什么会更快?
高度依赖于你正在建设的东西。 Swing有更多的组件(第三方以及内置)并且并非所有组件都已经进入新的JavaFX平台,所以如果你需要一些东西,可能会有一定数量的重新发明轮子有点习惯。另一方面,如果你想做转换/动画/视频内容,那么这在FX中就更容易了。
要记住的另一件事是(也许)外观和感觉。如果您绝对必须拥有默认的系统外观,那么JavaFX(目前)无法提供此功能。对我来说不是必须的(我更喜欢默认的FX外观),但我知道有些政策要求限制系统风格。
就个人而言,我认为JavaFX是“即将到来”的UI库,它还不是相当(但不仅仅是可用的),而Swing是一个功能全面且支持的边缘传统UI库目前,但未来几年可能不会那么多(因此外汇有可能在某些时候超过它。)
答案 1 :(得分:80)
如Oracle所述,JavaFX是其基于Java的富客户端战略的下一步。 因此,这是我建议你的情况:
维护什么更容易,更清洁
从头开始构建的速度会更快
MVC模式支持
有关详细信息,请在此处查看Oracle关于JavaFX的这些常见问题解答。
答案 2 :(得分:14)
没有人提及它,但是由于缺少“jfxrt.jar”支持,JavaFX无法在Oracle(例如Solaris)认为是“服务器”的某些体系结构上编译或运行。坚持使用SWT,直至另行通知。
答案 3 :(得分:5)
我认为这个问题没有任何一个正确的答案,但我的建议是坚持使用SWT,除非你遇到需要如此大规模改革的严重限制。
此外,SWT实际上比Swing更新,更积极地维护。 (使用本机组件替换Swing是originally developed。
答案 4 :(得分:0)
我会四处寻找能够满足您需求的(第三方?)组件。我必须为议程视图创建自定义Swing组件,您可以在其中预订多个资源,以及类似Excel的网格,可以很好地使用键盘导航等。我有一段非常糟糕的时间让他们工作得很好,因为每当我遇到问题时,我都需要深入研究Swing的许多错综复杂的东西。鼠标和焦点行为以及许多其他事情可能很难做到,特别是对于休闲的Swing用户。我希望JavaFX能够更加面向未来并且开箱即用。
答案 5 :(得分:0)
在具有集成视频的旧款笔记本上,Swing应用程序的启动速度比JavaFX应用程序快得多。至于开发,我建议切换到Scala - 类似的Scala Swing应用程序包含的代码比Java少2..3倍。 至于Swing vs SWT:Netbeans GUI比Eclipse快得多......