Java FX swt_关于java:用于桌面应用程序的Swing vs JavaFx

我有一个非常大的程序,目前正在使用SWT。 该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序。

现在SWT有点老了我想切换到Swing或JavaFX。 我想听听你对三件事的看法。

我主要担心的是桌面GUI应用程序会有什么好处? (我在网上看了很多人都认为JavaFX和Swing一样好,但除了简单的意见火焰战争之外我没有看到很多有效的论据)。 它必须适用于Windows,Mac和一些流行的Linux发行版。

什么更干净,更容易维护?

从头开始构建什么会更快?

我在我的应用程序中使用MVC方法,如果有任何帮助的话。

JavaFX很好,你从头开始。此外,因为JavaFX正式将Swing替换为Java的Oracles UI库。这并不意味着Swing被废除了。这只是意味着JavaFX将在每个版本中得到更多的关注。话虽如此,关于这个主题的问题已经有一百五十个问题了。

stackoverflow.com/questions/10587713/我还提到了谷歌。已经很多了。

好的建议真的好像是fx然后,我会保持这个开放,但我会接受一个答案。谢谢你的链接。

以下是JavaFX的快速摘要,但SWT,Swing或JavaFX中的任何一个都可用于生成桌面应用程序。

没人提到它,但是由于缺少"jfxrt.jar"支持,JavaFX不能在Oracle(例如Solaris)认为是"服务器"的某些体系结构上编译或运行。

可能与Java GUI框架重复。选择什么? Swing,SWT,AWT,SwingX,JGoodies,JavaFX,Apache Pivot?

JavaFX Designer很慢,太慢。我无法处理我的设计,我被迫编写设计,因为每当我向设计师添加按钮时Netbeans都会冻结。 Swing确实很好,从来没有遇到过这个问题。

在使用JavaFX几个月后,当我回到学校的Swing项目时,它们似乎真的过时了。属性和绑定比Swing中的听众更直观。 MDI支持的缺乏对我来说至少不是问题,我更喜欢标签。使用CSS设置样式比设置和覆盖方法更容易管理。

What will be cleaner and easier to maintain?

在所有条件相同的情况下,可能是JavaFX - API在各个组件之间更加一致。但是,这更多地取决于代码的编写方式,而不是用于编写代码的库。

And what will be faster to build from scratch?

高度依赖于你正在建设的东西。 Swing有更多的组件(第三方以及内置)并且并非所有组件都已经进入新的JavaFX平台,所以如果你需要一些东西,可能会有一定数量的重新发明轮子有点习惯。另一方面,如果你想做转场/动画/视频的东西,那么这在FX中更容易。

要记住的另一件事是(也许)外观和感觉。如果您绝对必须拥有默认的系统外观,那么JavaFX(目前)无法提供此功能。对我来说不是必须的(我更喜欢默认的FX外观),但我知道有些政策要求限制系统风格。

就我个人而言,我认为JavaFX是一个"即将到来"的UI库,它还没有完全存在(但超过可用),而Swing作为边缘传统的UI库,目前功能齐全并且支持,但可能不会未来几年这么多(因此外汇有可能在某些时候超过它。)

我相信这些要点都适用于.NET世界以及桌面GUI世界,其中Windows Presentation Foundation是旨在取代旧Windows窗体的现代方法,因此它在理论上在所有方面都更好,除了它不会(但是它? 多年来)支持原生的通用控件/ shell看起来你期望如一个简单的文件对话框/目录浏览器/树视图控件。

正如Oracle所述,JavaFX是其基于Java的富客户端战略的下一步。

因此,这是我建议你的情况:

What would be easier and cleaner to maintain

JavaFX引入了一些关于Swing的改进,例如,使用FXML标记UI的可能性,以及使用CSS的主题。它具有编写模块化,清晰和可维护代码的巨大潜力。

What would be faster to build from scratch

这在很大程度上取决于您的技能和您使用的工具。

对于摆动,各种IDE提供了快速开发的工具。我个人发现的最好的是NetBeans中的GUI构建器。

JavaFX也得到了各种IDE的支持,虽然不像Swing目前支持的那样成熟。但是,它对FXML和CSS中的标记的支持使得JavaFX上的GUI开发变得直观。

MVC Pattern Support

JavaFX对MVC模式非常友好,您可以将您的工作清晰地分离为:表示(FXML,CSS),模型(Java,域对象)和逻辑(Java)。

恕我直言,Swing的MVC支持不是很吸引人。您将在各种组件中看到的流程缺乏一致性。

有关详细信息,请在此处查看Oracle关于JavaFX的这些常见问题解答。

JavaFX常见问题解答

没人提到它,但是由于缺少"jfxrt.jar"支持,JavaFX不能在Oracle(例如Solaris)认为是"服务器"的某些体系结构上编译或运行。坚持SWT,直到另行通知。

@Quillion特别要求建立一个桌面应用程序,"必须在windows,mac和一些流行的Linux风格上工作。" 所以我猜他并不关心Solaris。

我不认为对这个问题有任何正确的答案,但我的建议是坚持使用SWT,除非你遇到需要如此大规模改革的严重限制。

此外,SWT实际上比Swing更新,更积极地维护。 (它最初是作为使用本机组件的Swing的替代品而开发的)。

SWT从未打算取代Swing。 怎么会这样? Swing来自SUN的Java,而SWT仅在4或5个平台上运行,最初来自IBM,并在Eclispe Foundation中进一步开发。 如果你可以说:SWT旨在取代AWT。

在具有集成视频的旧笔记本上,Swing应用程序的启动和工作速度比JavaFX应用程序快得多。至于开发,我建议切换到Scala - 类似的Scala Swing应用程序包含的代码比Java少2..3倍。

至于Swing vs SWT:Netbeans GUI比Eclipse快得多......

Scala Swing很值得一提

我会四处寻找一些能够满足您需求的(第三方?)组件。我必须为议程视图创建自定义Swing组件,您可以在其中预订多个资源,以及类似Excel的网格,可以很好地使用键盘导航等。我有一段非常糟糕的时间让他们工作得很好,因为每当我遇到问题时,我都需要深入研究Swing的许多错综复杂的东西。鼠标和焦点行为以及许多其他事情可能很难做到,特别是对于休闲的Swing用户。我希望JavaFX能够更加面向未来并且开箱即用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值