从JavaFX开始 - JavaFX版本和“开发模式”问题

6

我计划开始开发一个桌面应用程序,但到目前为止,对我来说,桌面应用程序= swing。我做了一些研究,并发现自己有一些问题:

  1. 我发现有很多JavaFX版本:

    • 有人说JavaFX 1.0已经过时了;
    • 有JavaFX 2.X非常好;
    • 现在有JavaFX 8(这是正确的吗?);

    但即使使用最新的NetBeans IDE版本(8.0)和JDK 8(1.8.0),当我创建JavaFX应用程序时,它开始使用JavaFX 2.2 - JavaFX 8真的是一个新的JavaFX版本吗,还是人们只是因为他们使用JDK 8中的JavaFX 2.X而这么说?

  2. 关于版本的另一个问题,使用X版本的JavaFX开发的应用程序是否与更高版本兼容?就像swing应用程序一样,如果您在Java 5中开发了一个应用程序,则即使在Java 8上也可以运行。

  3. 关于开发模式,更具体地说是关于布局创建,我注意到有两种创建布局的方法:通过在Java中编写代码,或者通过创建XML文件(FXML),并将Java类作为控制器(更MVC方法)就像JSF应用程序一样。我应该选择哪一个?每种方法的优缺点是什么?


我并没有深入研究过,但JavaFX是我现在首选的Java GUI开发库。随着Java 8的推出,它现在已经成为JRE的一部分,无需额外的部署步骤,因此开发/部署方面的事情变得不那么复杂了。它具有现代GUI元素,也许最重要的是,它拥有一个现代/本地化的文件浏览器。试试看吧,这是学习的最佳方式。 - Daniel B. Chapman
1个回答

23

欢迎来到JavaFX的世界

我不确定您为什么会遇到JavaFX 2.2与JDK 1.8的问题,因为JDK 8中已经包含了JavaFX 8,且默认情况下应该使用它。

简单介绍一下JavaFX及其与Swing的区别,请参考以下要点:

  1. 使用JavaFX 2.0+引入的FXML,可以将视图/UI与功能分离,避免在Java代码中混杂视图和功能的旧模式。
  2. JavaFX具有强大的CSS集成,可以装饰视图,在Swing中这是缺失的
  3. 开发速度更快,因为您有SceneBuilder可以帮助您。

如果想了解Swing和JavaFX的更多区别,请查看以下内容(尽管答案有些过时,很多东西已经改变。 JavaFX已经变得更加强大和完善!

https://stackoverflow.com/questions/1318645/JavaFX-or-swing

JavaFX 2与Swing用于纯Windows桌面应用的区别

JavaFX 1+、2+和8+的区别

  1. JavaFX 1+基本上是一种称为JavaFX脚本的脚本语言,与Java语言非常不同。
  2. JavaFX 2.0改变了JavaFX的面貌。所有JavaFX API现在都作为纯Java API可用。FXML也在JavaFX的这个阶段引入了!
  3. JavaFX 8.0带来了JavaFX的新面貌,JavaFX被接受为Java 8的一个组成部分。

兼容性 - 所有JavaFX应用程序都是向前兼容的,即JavaFX 2.0+与Java 7、8及以上版本兼容。尽管使用JavaFX 8制作的应用程序不兼容Java 7

JavaFX 1.3支持已从Java 1.7中取消。

开发模式

  1. JavaFX提供了使用您选择的方式构建应用程序的机会——即使用纯Java构建视图的传统方法或使用FXML
  2. JavaFX严格遵循MVC模式,将视图及其事件分离。视图使用FXML创建,控制器是Java文件。

来自Oracle文档

从Model View Controller(MVC)角度看,包含用户界面描述的FXML文件是视图。控制器是Java类,可选地实现Initializable类,它被声明为FXML文件的控制器。模型由在Java方面定义的域对象组成,通过控制器连接到视图。

有关更多信息和FXML的优点,请参阅:

在JavaFX中,哪种编程方式更好?


那么,如果我使用JDK8创建一个JavaFX应用程序,我使用的是JavaFX8,而不是JavaFX 2,对吗? - Mateus Viccari
非常好的答案,谢谢。您知道为什么许多新组件只支持JFX8而不支持JFX2吗?我必须使用Java 7,我不明白为什么他们停止支持jfx2。 - Rafaesp
@Rafaesp 这只是一个功能演进的过程。JavaFX 8拥有全新的UI(Modena)和许多错误修复。如果JavaFX是您软件的重要组成部分,您应该考虑使用Java 8而不是Java 7。 - ItachiUchiha

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