JavaFx与TornadoFx比较

20

我已经开始学习javafx。 我想知道javafxTornadofx的区别,它们如何相互关联并且彼此之间有何不同。

同时,需要了解在什么情况下使用哪个框架。

javafxTornadofx是否存在某些情况下其中一个比另一个更实用或建议使用?


1
你正在使用 Kotlin 吗? - Austin
1
不,不使用Java。但想了解一下TornadoFx。 - Chetna rustagi
2个回答

31

JavaFX更像是一个工具包(它包含了构建GUI所需的全部基础),它是一个功能完备的“工具包”,但它非常冗长,语法中包含样板代码,这使得它很难维护。这就是TornadoFX的用武之地。TornadoFX类似于基于该工具包的框架,它摆脱了所有样板代码,并使GUI构建声明性,以至于它类似于HTML。

此外,即使TornadoFX可以从Java中使用,但它的目的是从Kotlin中使用(JavaFX也可以在Kotlin中使用而没有任何问题)。

TornadoFX简化并优化了GUI构建过程(使代码更加清晰),但它在“幕后”使用JavaFX,并且因此与JavaFX可以互操作。例如,您可以在纯JavaFX代码中创建一个小部件,然后在TornadoFX中使用它,或者例如在TornadoFX中创建整个窗口,然后从JavaFX调用它。

这里的主要论点是TornadoFX不会以任何方式限制JavaFX,您仍然可以从TornadoFX中访问低级JavaFX内容。

除了GUI构建器之外,TornadoFX还包含有用的工具,如ViewModel类,它们将GUI和逻辑分开(可用但不是必须的),以及其他一些有用的工具。

个人而言,我总是使用TornadoFX,因为它使代码非常简洁且易于维护,同时不会失去JavaFX的任何功能。


1
这很有帮助,我们可以交替使用它们的功能。非常感谢。 - Chetna rustagi

16

目前被接受的答案没有回答这部分问题。

有没有任何情况下javafx比Tornadofx更有用/建议使用

被接受的答案的要点是:对于标准的简单GUI,Kotlin结合TornadoFX可以让您快速启动。这是正确的。 一些JavaFX更好的例子:

  • JavaFX 3D子场景
  • 与Swing进行交互(我不确定您如何在此处使用Kotlin,但是只使用TornadoFX可能会起作用)
  • 基于画布的渲染
  • 高性能自定义事件处理

显然,这些情况并不代表大多数GUI应用程序,而是高性能和定制渲染类型应用程序。因此,总体而言,如果您从头开始...即...您尚未精通JavaFX,则使用TornadoFX是一个好的起点。

在这一点上,选择以Kotlin为起点也很有趣。我个人认为它不比仅使用JavaFX编写有什么优势,但我对JavaFX非常熟悉,所以可能有偏见。此外,虽然您不必这样做......但是在没有IntelliJ的情况下开发Kotlin是很痛苦的,这是该公司开发Kotlin的一部分计划。

所有这些都说:

语法包含样板代码

在一定程度上是正确的,Tornado通过强制您使用标准化的API集来减少样板代码。 但是...

这使得难以维护。

我不同意。它并不“难”维护。这是您一次性复制/粘贴的代码,很可能再也没有更改过。我们不应该为了“可维护性”而急于掩盖和封装我们代码库中的每个ASCII字符,同时向我们的性能开炮。


感谢提供有用的案例,展示了JavaFX更加实用的地方。 - Chetna rustagi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接