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