Swing与JavaFx的桌面应用程序

java swing user-interface javafx swingx

212742 观看

6回复

2852 作者的声誉

我有一个非常大的程序,当前正在使用SWT。该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序。现在SWT有点老了,我想切换到Swing或JavaFX。我想听听您对三件事的想法。

我主要关心的是桌面GUI应用程序会更好吗?(我在网上看过,很多人认为JavaFX和Swing一样好,但是除了简单的见解大战之外,我没有看到很多有效的论据)。它必须在Windows,Mac和一些流行的Linux发行版上都可以工作。

  • 什么会更清洁,更易于维护?

  • 从头开始构建的速度更快?

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

作者: Quillion 的来源 发布者: 2013 年 5 月 22 日

回应 (6)


5

14822 作者的声誉

我认为这个问题没有一个正确的答案,但是我的建议是坚持使用SWT,除非您遇到严重的限制而需要进行大规模的大修。

而且,SWT实际上比Swing更新,更活跃。(它最初是使用本机组件替代Swing 开发的)。

作者: Russell Zahniser 发布者: 22.05.2013 02:56

0

816 作者的声誉

我会四处寻找一些可以满足您需求的(第三方?)组件。我必须为议程视图创建自定义的Swing组件,以便在其中可以预订多个资源,以及一个类似Excel的网格,该网格可以很好地与键盘导航等配合使用。我花了很长时间让他们很好地工作,因为每当遇到问题时,我都需要深入研究Swing的许多复杂问题。鼠标和焦点行为以及许多其他事情可能很难正确解决,尤其是对于随意的Swing用户。我希望JavaFX更加面向未来,并且开箱即用。

作者: eriksensei 发布者: 22.05.2013 02:57

152

48526 作者的声誉

决定

什么会更清洁,更易于维护?

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

从头开始构建的速度更快?

高度取决于您要构建的内容。Swing具有更多的组件(第三方和内置组件),但并不是所有组件都已经进入了新的JavaFX平台,因此,如果您需要一些组件,可能需要重新设计轮子。有点习惯。另一方面,如果您要进行转场/动画/视频工作,则在FX中要容易几个数量级。

要记住的另一件事是(也许)外观。如果您绝对必须具有默认的系统外观,那么JavaFX(目前)不能提供此功能。对我来说并不是必须的(我还是更喜欢默认的FX外观),但是我知道有些策略要求限制系统样式。

就个人而言,我看到的JavaFX为“行动和未来”,这不是UI库相当到那一步(但超过可用),和Swing为的全功能和支持的时刻边界遗留UI库,但可能不会在未来的几年中会发生很多事情(因此FX有时会超过它)。

作者: Michael Berry 发布者: 22.05.2013 03:00

81

841 作者的声誉

如Oracle所述,JavaFX是其基于Java的富客户端策略的下一步。因此,这是我建议您的情况:

什么会更容易维护

  • JavaFX对Swing进行了一些改进,例如可以使用FXML标记UI以及使用CSS进行主题化。编写模块化,干净且可维护的代码具有巨大的潜力。

从头开始构建会更快

  • 这在很大程度上取决于您的技能和使用的工具。
    • 为了摆动,各种IDE提供了用于快速开发的工具。我个人最好的发现是NetBeans中的GUI构建器。
    • JavaFX也获得了各种IDE的支持,尽管不如Swing目前所提供的支持成熟。但是,它对FXML和CSS中的标记的支持使JavaFX上的GUI开发变得直观。

MVC模式支持

  • JavaFX对MVC模式非常友好,您可以将工作清晰地分离为:表示形式(FXML,CSS),模型(Java,域对象)和逻辑(Java)。
  • 恕我直言,Swing对MVC的支持不是很吸引人。您在各个组件之间看到的流程缺乏一致性。

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

作者: Yonathan W'Gebriel 发布者: 17.02.2014 08:13

14

683 作者的声誉

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

作者: Malcolm Boekhoff 发布者: 04.04.2014 01:42

0

373 作者的声誉

在带有集成视频的较早笔记本电脑上,Swing应用程序会启动,并且比JavaFX应用程序运行得快得多。至于开发,我建议切换到Scala-可比的Scala Swing应用程序包含的代码比Java少2..3倍。至于Swing和SWT:Netbeans GUI的速度比Eclipse快得多。

作者: user2053898 发布者: 08.09.2014 08:37
32x32