1. JavaFX概述
JavaFX 是一组图形和媒体包,使开发人员能够设计、创建、测试、调试和部署在不同平台上一致运行的富客户端应用程序。
目录
2. JavaFX 应用程序
由于 JavaFX 库是作为 Java API 编写的,因此 JavaFX 应用程序代码可以从任何 Java 库中引用 API。例如,JavaFX 应用程序可以使用 Java API 库来访问本机系统功能并连接到基于服务器的中间件应用程序。
可以自定义 JavaFX 应用程序的外观和感觉。级联样式表 (CSS) 将外观和样式与实现分开,以便开发人员可以专注于编码。图形设计人员可以通过 CSS 轻松自定义应用程序的外观和样式。如果您有网页设计背景,或者如果您想将用户界面 (UI) 和后端逻辑分开,那么您可以使用 FXML 脚本语言开发 UI 的表示方面,并为应用程序使用 Java 代码逻辑。如果您更喜欢在不编写代码的情况下设计 UI,那么请使用 JavaFX Scene Builder。在您设计 UI 时,Scene Builder 创建可移植到集成开发环境 (IDE) 的 FXML 标记,以便开发人员可以添加业务逻辑。
3. 可用性
JavaFX API 作为 Java SE 运行时环境 (JRE) 和 Java 开发工具包 (JDK) 的完全集成功能提供。因为 JDK 可用于所有主要桌面平台(Windows、Mac OS X 和 Linux),所以编译到 JDK 7 及更高版本的 JavaFX 应用程序也可以在所有主要桌面平台上运行。JavaFX 8 还提供了对 ARM 平台的支持。适用于 ARM 的 JDK 包括 JavaFX 的基础、图形和控件组件。
跨平台兼容性为 JavaFX 应用程序开发人员和用户提供了一致的运行时体验。
在JDK 下载页面上,您可以获得 JavaFX 示例应用程序的 zip 文件。示例应用程序提供了许多代码示例和片段,通过示例展示了如何编写 JavaFX 应用程序。请参阅“如何运行示例应用程序?” 想要查询更多的信息。
4. 主要特点
JavaFX 8 及更高版本中包含以下功能。在 JavaFX 8 版本中引入的项目相应地指出:
-
Java APIs。JavaFX 是一个 Java 库,由用 Java 代码编写的类和接口组成。这些 API 旨在成为 Java 虚拟机 (Java VM) 语言(例如 JRuby 和 Scala)的友好替代品。
-
FXML 和 Scene Builder(场景生成器)。FXML 是一种基于 XML 的声明性标记语言,用于构建 JavaFX 应用程序用户界面。设计人员可以在 FXML 中编码或使用 JavaFX Scene Builder 以交互方式设计图形用户界面 (GUI)。Scene Builder 生成可移植到 IDE 的 FXML 标记,开发人员可以在其中添加业务逻辑。
-
WebView(网络视图)。一个 Web 组件,它使用 WebKitHTML 技术使在 JavaFX 应用程序中嵌入网页成为可能。WebView中运行的JavaScript可以调用Java API,Java API可以调用WebView中运行的JavaScript。JavaFX 8 中添加了对其他 HTML5 功能的支持,包括 Web Sockets、Web Workers 和 Web Fonts,以及打印功能。请参阅向 JavaFX 应用程序添加 HTML 内容。
-
Swing interoperability(Swing 互操作性)。现有的 Swing 应用程序可以使用 JavaFX 功能进行更新,例如丰富的图形媒体播放和嵌入的 Web 内容。
SwingNode
类,使您可以嵌入Swing的内容进JavaFX应用程序,已在JavaFX 8见添加了SwingNode API的javadoc和JavaFX的应用程序中嵌入的Swing内容以获取更多信息。 -
Built-in controls(内置 UI 控件) 和 CSS。JavaFX 提供了开发全功能应用程序所需的所有主要 UI 控件。可以使用标准 Web 技术(例如 CSS)为组件设置外观。DatePicker 和 TreeTableView UI 控件现在可用于 JavaFX 8 版本。有关更多信息,请参阅使用 JavaFX UI 控件。此外,CSS Styleable* 类已成为公共 API,允许对象通过 CSS 设置样式。
-
Modena theme(摩德纳主题)。Modena 主题取代 Caspian 主题成为 JavaFX 8 应用程序的默认主题。通过
setUserAgentStylesheet(STYLESHEET_CASPIAN)
在 Application start() 方法中添加该行,Caspian 主题仍然可供您使用。有关更多信息,请参阅fxexperience.com 上的Modena 博客 -
3D Graphics Features(3D 图形功能)。用于
Shape3D
(Box, Cylinder, MeshView, and Sphere
子类)SubScene, Material, PickResult, LightBase (AmbientLight
和PointLight
子类)的新 API 类SceneAntialiasing
已添加到 JavaFX 8 的 3D 图形库中。Camera
此版本中还更新了 API 类。欲了解更多信息,请参阅入门JavaFX的3D图形文件和相应的API的javadoc的javafx.scene.shape.Shape3D
,javafx.scene.SubScene, javafx.scene.paint.Material, javafx.scene.input.PickResult
和javafx.scene.SceneAntialiasing
。 -
Canvas API(画布 API)。Canvas API 支持直