我已经开始学习javafx
。 我想知道javafx
和Tornadofx
的区别,它们如何相互关联并且彼此之间有何不同。
同时,需要了解在什么情况下使用哪个框架。
javafx
和Tornadofx
是否存在某些情况下其中一个比另一个更实用或建议使用?
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的任何功能。
目前被接受的答案没有回答这部分问题。
有没有任何情况下javafx比Tornadofx更有用/建议使用
被接受的答案的要点是:对于标准的简单GUI,Kotlin结合TornadoFX可以让您快速启动。这是正确的。 一些JavaFX更好的例子:
显然,这些情况并不代表大多数GUI应用程序,而是高性能和定制渲染类型应用程序。因此,总体而言,如果您从头开始...即...您尚未精通JavaFX,则使用TornadoFX是一个好的起点。
在这一点上,选择以Kotlin为起点也很有趣。我个人认为它不比仅使用JavaFX编写有什么优势,但我对JavaFX非常熟悉,所以可能有偏见。此外,虽然您不必这样做......但是在没有IntelliJ的情况下开发Kotlin是很痛苦的,这是该公司开发Kotlin的一部分计划。
所有这些都说:
语法包含样板代码
在一定程度上是正确的,Tornado通过强制您使用标准化的API集来减少样板代码。 但是...
这使得难以维护。
我不同意。它并不“难”维护。这是您一次性复制/粘贴的代码,很可能再也没有更改过。我们不应该为了“可维护性”而急于掩盖和封装我们代码库中的每个ASCII字符,同时向我们的性能开炮。