- 本JavaFX中文教程翻译原文来源于JavaFX 文本教程
- 文中内容若翻译有误或有侵权问题,请及时与我联系!
- 翻译此文的目的是为以后学习更加方便查看。
- 文章持续更新中…
JavaFX是Java的GUI工具箱(GUI是图形用户界面的缩写)。JavaFX使使用Java创建桌面应用程序和游戏变得更加容易。
JavaFX是出色的GUI应用程序平台的原因有很多。首先,Java仍然是世界上最受欢迎的编程语言之一,拥有大量的标准类和由Java开发人员社区开发的丰富的开源工具包。
JavaFX带有大量的内置GUI组件,例如按钮,文本字段,表格,树,菜单,图表等。JavaFX可以通过CSS或以编程方式设置样式。JavaFX附带了一个内置图表库,您可以将其用于简单图表。JavaFX支持2D和3D图形。JavaFX具有可显示现代Web应用程序的WebView。
这是JavaFX中概念,组件和功能的完整列表:
下列有一些很不错的第三方资源,主要列出了其中一些:
与JavaFX相关的资源:
以下是一些使用JavaFX制作的公开可用的应用程序,因此您可以亲自了解JavaFX的功能:
为什么移动设备首选本机/本地应用程序,而台式计算机则首选web应用程序?为什么两种类型的设备都不首选本机/本地应用程序?
本机/本地应用程序往往比web应用程序提供更好的用户体验,因为它们具有更高的响应速度(更快、更敏捷)、更高级的GUI控件以及更好地与本地设备集成。传统桌面应用最大的两个问题是互联网带宽低和安装过程繁琐。随着高速互联网连接的普及,私人设备的应用商店和企业机器的按需安装系统,这两个问题基本上都得到了解决。
我认为本地/本地应用程序应该是经常使用的所有应用程序的首选,或者工作流程有些复杂的应用程序。对于需要访问其运行的计算机的本地磁盘或需要与许多不同的远程系统进行通信并且有时使用除HTTP之外的其他协议(例如IAP或流协议等)的应用程序,本机/本地应用程序也应该是首选)。有关更多应用程序示例,请参见JavaFX用例。
用户很少使用的应用程序,或者用户没有真正动机去下载和安装的应用程序可能应该保留为Web应用程序。例如,登录并管理您的保险合同的应用程序可能会很好地实现为网络应用程序。但是,您的用户每天使用几次的项目管理工具可能最好成为桌面应用程序。
我曾被问过好几次桌面应用程序是否都过时了-是否真的还有JavaFX之类的用例。的确,许多应用程序非常适合Web应用程序,因为您很少访问它们,并且所访问的资源始终存储在服务器上。但是,还有几种类型的应用程序可以更好地实现为桌面应用程序。
如引言中所述,我们在Nanosai上实际上是在使用JavaFX开发桌面应用程序。我们这样做是因为该应用程序需要访问本地磁盘,需要能够通过除HTTP之外的其他网络协议进行通信,并且需要标准Web浏览器根本无法提供的其他功能。
这是我在JavaFX上看到的一些一般用例的列表:
以下是我经常使用的一些桌面应用程序:
此外,一些开始使用Web应用程序的公司后来又添加了本机/本地桌面应用程序。其中一些是:
Gluon提供了一组工具来帮助您将JavaFX应用程序构建和打包为移动设备(Android和iOS)的本机映像。
也可以在Raspberry Pi计算机上运行JavaFX。您可以在《 Raspberry Pi上的Java入门》一书中阅读有关如何在Raspberry Pi上运行JavaFX的更多信息。
从Java 11开始,JavaFX已再次从Java SDK中删除。JavaFX已被分离到其自己的开源项目中。这意味着要从Java 11 / JavaFX 11下载JavaFX,您必须转到:
http://openjfx.io
但是,JavaFX任然不断发展,在其用户中仍然非常流行。
Almas Baim制作了FXGL JavaFX游戏引擎。您可以在以下位置找到它:
https://github.com/AlmasB/FXGL
您可能知道Java也有另一个GUI工具箱,称为Java Swing(或JFC)。如果您想知道这两个工具包之间的区别是什么,我在下面列出了一些主要区别:
特征 | JavaFX | Swing |
---|---|---|
属性绑定 | JavaFX属性支持绑定,这意味着您可以侦听其值的更改 | Swing属性不直接支持绑定 |
声明式布局 | JavaFX支持通过FXML进行声明式布局 | Swing没有对声明式布局的内置支持 |
造型风格 | JavaFX支持基于CSS和基于代码的样式 | Swing仅支持基于代码的样式 |
WebView | JavaFX具有可呈现现代网页的WebView | Swing没有WebView |
Graphics | JavaFX使用基于矢量的图形 | Swing使用基于像素的图形 |
3D图形 | JavaFX具有对3D图形的内置支持 | Swing需要Java 3D API用于3D图形 |
并发API | JavaFX具有内置的并发API | Swing没有内置的并发API |
工具包 | JavaFX是较新的 | Swing比较老 |
包含在Java SDK中 | Java 11和更高版本不包含JavaFX | Swing仍然包括在内,但有一天可能会被删除 |
为了方便起见,我已经开始将本教程中的许多JavaFX示例添加到公共GitHub存储库中。这些示例是随时可以运行的独立示例,每个示例都有其自己的class + main()方法来运行该特定示例。这是GitHub存储库:
GitHub上的JavaFX示例
以下是我读过的有关JavaFX的最有用的书:
您可以在此处找到JavaFX 11 JavaDoc:
https://openjfx.io/javadoc/11/
下一页:JavaFX概述