[第 3 章](3.html#aid-PNV62"Chapter 3. Developing a JavaFX Desktop and Web Application")*开发 JavaFX 桌面和 Web 应用程序*介绍了如何开发引人注目的桌面和 Web 应用程序,该应用程序利用多核硬件加速 GPU,以提供具有惊人外观的高性能基于 UI 的应用程序。
[第 3 章](3.html#aid-PNV62"Chapter 3. Developing a JavaFX Desktop and Web Application")*开发 JavaFX 桌面和 Web 应用*介绍了如何开发引人注目的桌面和 Web 应用,该应用利用多核硬件加速 GPU,以提供具有惊人外观的高性能基于 UI 的应用。
* 为 web 开发人员使用其他基于 JVM 的动态语言(如*JavaScript*)中的 JavaFX 提供了一种更简单的方法。
* 为 web 开发人员使用其他基于 JVM 的动态语言(如*JavaScript*)中的 JavaFX 提供了一种更简单的方法。
* 通过集成其他系统语言,如*Groovy*,编写大型复杂的 JavaFX 应用程序。
* 通过集成其他系统语言,如*Groovy*,编写大型复杂的 JavaFX 应用。
* 将 UI 控件绑定到控制器属性,以便自动通知和更新从模型反映到绑定的 UI 节点。绑定包括对高性能延迟绑定、绑定表达式、绑定序列表达式和部分绑定重新评估的支持。我们将在[第 3 章](3.html#aid-PNV62"Chapter 3. Developing a JavaFX Desktop and Web Application")*开发 JavaFX 桌面和 Web 应用程序*中看到这一点。
* 将 UI 控件绑定到控制器属性,以便自动通知和更新从模型反映到绑定的 UI 节点。绑定包括对高性能延迟绑定、绑定表达式、绑定序列表达式和部分绑定重新评估的支持。我们将在[第 3 章](3.html#aid-PNV62"Chapter 3. Developing a JavaFX Desktop and Web Application")*开发 JavaFX 桌面和 Web 应用*中看到这一点。
上图中以绿色显示的 web 引擎组件是最重要的 JavaFX UI 控件之一,基于 WebKit 引擎构建,WebKit 引擎是一个开源 web 浏览器引擎,支持 HTML5、JavaScript、CSS、DOM 呈现和 SVG 图形。它通过 API 提供 web 查看器和完整的浏览功能。在开发 Web 应用程序时,我们将在[第 3 章](3.html#aid-PNV62"Chapter 3. Developing a JavaFX Desktop and Web Application")*开发 JavaFX 桌面和 Web 应用程序*中深入探讨这一点。
上图中以绿色显示的 web 引擎组件是最重要的 JavaFX UI 控件之一,基于 WebKit 引擎构建,WebKit 引擎是一个开源 web 浏览器引擎,支持 HTML5、JavaScript、CSS、DOM 呈现和 SVG 图形。它通过 API 提供 web 查看器和完整的浏览功能。在开发 Web 应用时,我们将在[第 3 章](3.html#aid-PNV62"Chapter 3. Developing a JavaFX Desktop and Web Application")*开发 JavaFX 桌面和 Web 应用*中深入探讨这一点。
1. Using a JavaFX Application (`javafx.application.Application`) class static method `setUserAgentStylesheet(String URL)` method, which styles all the application hierarchy, including every scene and all child nodes in a JavaFX application. It is used as follows:
1. Using a JavaFX Application (`javafx.application.Application`) class static method `setUserAgentStylesheet(String URL)` method, which styles all the application hierarchy, including every scene and all child nodes in a JavaFX application. It is used as follows:
为了能够在您的设备上测试和部署您的应用程序,您将需要 Apple Developer 程序的活动订阅。访问苹果开发者门户网站[https://developer.apple.com/register/index.action](https://developer.apple.com/register/index.action) 注册。您还需要为开发提供设备。您可以在 Apple Developer Portal 中找到有关设备配置的信息,或遵循以下指南:[http://www.bignerdranch.com/we-teach/how-to-prepare/ios-device-provisioning/](http://www.bignerdranch.com/we-teach/how-to-prepare/ios-device-provisioning/) 。
为了能够在您的设备上测试和部署您的应用,您将需要 Apple Developer 程序的活动订阅。访问苹果开发者门户网站[https://developer.apple.com/register/index.action](https://developer.apple.com/register/index.action) 注册。您还需要为开发提供设备。您可以在 Apple Developer Portal 中找到有关设备配置的信息,或遵循以下指南:[http://www.bignerdranch.com/we-teach/how-to-prepare/ios-device-provisioning/](http://www.bignerdranch.com/we-teach/how-to-prepare/ios-device-provisioning/) 。
* 非常明智地,基金会选择了带有浮点支持的 CPU,通常称为硬浮点,它提供了比所谓的软浮点仅芯片更大的性能。可用于 Pi 的操作系统利用了额外的功率和速度。
* 非常明智地,基金会选择了带有浮点支持的 CPU,通常称为硬浮点,它提供了比所谓的软浮点仅芯片更大的性能。可用于 Pi 的操作系统利用了额外的功率和速度。
* 最后,Pi 有一个相当坚固的图形处理单元(GPU),具有快速 3D 核心,能够以 40 比特/秒的速度使用 H.264 进行模糊质量的播放([https://www.raspberrypi.org/help/faqs/#generalSoCUsed](https://www.raspberrypi.org/help/faqs/#generalSoCUsed) )。
* 最后,Pi 有一个相当坚固的图形处理单元(GPU),具有快速 3D 核心,能够以 40 比特/秒的速度使用 H.264 进行模糊质量的播放([https://www.raspberrypi.org/help/faqs/#generalSoCUsed](https://www.raspberrypi.org/help/faqs/#generalSoCUsed) )。
...
@@ -146,7 +146,7 @@ NOOBS 是一个包含 Raspbian 的简单操作系统安装程序。但是 lite
...
@@ -146,7 +146,7 @@ NOOBS 是一个包含 Raspbian 的简单操作系统安装程序。但是 lite
![Using NOOBS](img/image00224.jpeg)
![Using NOOBS](img/image00224.jpeg)
使用 SDFormatter 应用程序格式化 SD 卡
使用 SDFormatter 应用格式化 SD 卡
3. Once the format is completed, close SDFormatter. If you are on Mac or Linux, run the following command line from your terminal to check the disk letter and format type:
3. Once the format is completed, close SDFormatter. If you are on Mac or Linux, run the following command line from your terminal to check the disk letter and format type:
...
@@ -435,7 +435,7 @@ $ vncserver
...
@@ -435,7 +435,7 @@ $ vncserver
# JavaFX 8 开发先决条件
# JavaFX 8 开发先决条件
现在我们已经为开发设置并配置了 Raspberry Pi,我们需要在开发机器和 Pi 上安装相同的正确匹配 JDK 8 构建版本。这对于在运行 JavaFX8 应用程序时避免库/版本控制问题非常重要,这也是我们下一步要做的。
现在我们已经为开发设置并配置了 Raspberry Pi,我们需要在开发机器和 Pi 上安装相同的正确匹配 JDK 8 构建版本。这对于在运行 JavaFX8 应用时避免库/版本控制问题非常重要,这也是我们下一步要做的。
接下来,让我们将项目配置为直接在 NetBeans 的 Raspberry Pi 上运行 JavaFX switch 应用程序。
接下来,让我们将项目配置为直接在 NetBeans 的 Raspberry Pi 上运行 JavaFX switch 应用。
# 将 NetBeans 与 Pi 一起使用
# 将 NetBeans 与 Pi 一起使用
在讨论了我们的应用程序逻辑并了解了它是如何工作的之后,是时候进行最好的部分了:构建应用程序并使用 NetBeans 在 Raspberry Pi 上运行它。步骤如下:
在讨论了我们的应用逻辑并了解了它是如何工作的之后,是时候进行最好的部分了:构建应用并使用 NetBeans 在 Raspberry Pi 上运行它。步骤如下:
1. 右键点击 NetBeans**项目**选项卡中的`Chapter6`项目,选择**属性**。
1. 右键点击 NetBeans**项目**选项卡中的`Chapter6`项目,选择**属性**。
2. From the **Project Properties** box, select **Run** from the **Categories** menu to the left. You will see a dialog similar to the following screenshot:
2. From the **Project Properties** box, select **Run** from the **Categories** menu to the left. You will see a dialog similar to the following screenshot:
...
@@ -635,7 +635,7 @@ gpio.shutdown();
...
@@ -635,7 +635,7 @@ gpio.shutdown();
远程 Pi-JDK 关联
远程 Pi-JDK 关联
5. 最后一步是构建应用程序并将其部署到 Raspberry Pi。要执行此操作,请转到**运行**菜单,选择**运行项目**并查看 NetBeans 输出窗口/选项卡。如果您在运行应用程序时关注 Pi 的屏幕,您将看到以下输出消息:
5. 最后一步是构建应用并将其部署到 Raspberry Pi。要执行此操作,请转到**运行**菜单,选择**运行项目**并查看 NetBeans 输出窗口/选项卡。如果您在运行应用时关注 Pi 的屏幕,您将看到以下输出消息:
```java
```java
jfx-deployment-script:
jfx-deployment-script:
...
@@ -657,8 +657,8 @@ gpio.shutdown();
...
@@ -657,8 +657,8 @@ gpio.shutdown();
我们还回顾了如何将 JDK 8/JavaFX 8 安装到 Raspberry Pi 和您的开发机器上,并且您学习了如何在您的开发机器上安装和配置 NetBeans,以便它可以使用 Pi 上的 JDK 作为调试和执行的远程平台。
我们还回顾了如何将 JDK 8/JavaFX 8 安装到 Raspberry Pi 和您的开发机器上,并且您学习了如何在您的开发机器上安装和配置 NetBeans,以便它可以使用 Pi 上的 JDK 作为调试和执行的远程平台。
在您的开发机器和 Raspberry Pi 准备就绪的情况下,我们讨论了使用 JavaFX 和一些精选工具/API(包括 Pi4j)来控制 GPIO,从 Raspberry Pi 开发一个简单但伟大的应用程序来控制外部世界所需的原则。
在您的开发机器和 Raspberry Pi 准备就绪的情况下,我们讨论了使用 JavaFX 和一些精选工具/API(包括 Pi4j)来控制 GPIO,从 Raspberry Pi 开发一个简单但伟大的应用来控制外部世界所需的原则。
Arduino IDE 使用第一个库进行串行通信,称为**RXTX**。最初来自 Trent Jarvi,并在 LGPL v2.1+受控接口链接许可证下发布,它与 Arduino IDE 一起发布,直到 1.5.5 beta 版才与主板通信。但是,它的速度非常慢,现在已被弃用。
Arduino IDE 使用第一个库进行串行通信,称为**RXTX**。最初来自 Trent Jarvi,并在 LGPL v2.1+受控接口链接许可证下发布,它与 Arduino IDE 一起发布,直到 1.5.5 beta 版才与主板通信。但是,它的速度非常慢,现在已被弃用。
...
@@ -336,7 +336,7 @@ jSSC 2.8.0 本机库
...
@@ -336,7 +336,7 @@ jSSC 2.8.0 本机库
### JavaFX 血量计监测应用
### JavaFX 血量计监测应用
我们将设计一个 JavaFX8 应用程序,从温度传感器获取读数,并在折线图中显示数值。我们还将使用一组模拟电路板 LED 的形状来显示电路板上的 LED 发生了什么。为了清楚起见,我们将使用两个类,一个用于串行阅读,另一个用于 JavaFXUI 和主应用程序`BloodMeterFX`文件,包括图表 API。
我们将设计一个 JavaFX8 应用,从温度传感器获取读数,并在折线图中显示数值。我们还将使用一组模拟电路板 LED 的形状来显示电路板上的 LED 发生了什么。为了清楚起见,我们将使用两个类,一个用于串行阅读,另一个用于 JavaFXUI 和主应用`BloodMeterFX`文件,包括图表 API。
和您一样,我迫不及待地开始开发过程,现在您将学习如何与连接到 Leap motion 设备的基于 JavaFX 8 3D 的应用程序进行无接触交互。
和您一样,我迫不及待地开始开发过程,现在您将学习如何与连接到 Leap motion 设备的基于 JavaFX 8 3D 的应用进行无接触交互。
鉴于本书尚未涉及 3D API,这是一个很好的机会来简要介绍 3D API,并将 Leap Motion v2 骨骼建模(hand in 3D)和一些 3D 交互引入到我们的 JavaFX 应用程序中。
鉴于本书尚未涉及 3D API,这是一个很好的机会来简要介绍 3D API,并将 Leap Motion v2 骨骼建模(hand in 3D)和一些 3D 交互引入到我们的 JavaFX 应用中。
Leap Motion API v2.0 引入了一个新的骨骼跟踪模型,该模型提供了有关手和手指的附加信息,预测了看不清的手指和手的位置,并改进了总体跟踪数据。有关 API 的更多信息,请访问[https://developer.leapmotion.com/documentation/java/devguide/Intro_Skeleton_API.html?proglang=java](https://developer.leapmotion.com/documentation/java/devguide/Intro_Skeleton_API.html?proglang=java) 。
Leap Motion API v2.0 引入了一个新的骨骼跟踪模型,该模型提供了有关手和手指的附加信息,预测了看不清的手指和手的位置,并改进了总体跟踪数据。有关 API 的更多信息,请访问[https://developer.leapmotion.com/documentation/java/devguide/Intro_Skeleton_API.html?proglang=java](https://developer.leapmotion.com/documentation/java/devguide/Intro_Skeleton_API.html?proglang=java) 。
我们将构建并展示如何将 Leap Motion v2 中的新骨骼模型轻松集成到 JavaFX 3D 场景中。我们将使用 JavaFX 提供的预定义 3D 形状 API 快速创建开箱即用的 3D 对象。这些形状包括我们将在应用程序中使用的长方体、圆柱体和球体。
我们将构建并展示如何将 Leap Motion v2 中的新骨骼模型轻松集成到 JavaFX 3D 场景中。我们将使用 JavaFX 提供的预定义 3D 形状 API 快速创建开箱即用的 3D 对象。这些形状包括我们将在应用中使用的长方体、圆柱体和球体。
## JavaFX3D API 一目了然
## JavaFX3D API 一目了然
...
@@ -158,11 +158,11 @@ JavaFX 3D 图形库包含 Shape3D API,JavaFX 中有两种 3D 形状:
...
@@ -158,11 +158,11 @@ JavaFX 3D 图形库包含 Shape3D API,JavaFX 中有两种 3D 形状:
***自定义形状**:JavaFX 网格类层次结构包含`TriangleMesh`子类。三角形网格是 3D 布局中使用的最典型的网格类型。
***自定义形状**:JavaFX 网格类层次结构包含`TriangleMesh`子类。三角形网格是 3D 布局中使用的最典型的网格类型。
在我们的应用程序中,我们将使用预定义的形状。有关 JavaFX3D API 和示例的更多信息,请访问[http://docs.oracle.com/javase/8/javafx/graphics-tutorial/javafx-3d-graphics.htm](http://docs.oracle.com/javase/8/javafx/graphics-tutorial/javafx-3d-graphics.htm) 。
在我们的应用中,我们将使用预定义的形状。有关 JavaFX3D API 和示例的更多信息,请访问[http://docs.oracle.com/javase/8/javafx/graphics-tutorial/javafx-3d-graphics.htm](http://docs.oracle.com/javase/8/javafx/graphics-tutorial/javafx-3d-graphics.htm) 。
您只需访问以下链接[即可下载样本 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) ,然后进入**Java SE 开发工具包 8u45 演示和示例下载**表,选中**接受许可协议**单选按钮,然后单击与您的操作系统相关的 zip 文件链接,如下图所示:
您只需访问以下链接[即可下载样本 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) ,然后进入**Java SE 开发工具包 8u45 演示和示例下载**表,选中**接受许可协议**单选按钮,然后单击与您的操作系统相关的 zip 文件链接,如下图所示:
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
JavaFX 示例文件夹内容
JavaFX 示例文件夹内容
任何`sample.jar`都可以作为独立应用程序运行;双击 JAR 文件,我们有四个应用程序:
任何`sample.jar`都可以作为独立应用运行;双击 JAR 文件,我们有四个应用:
1.`Ensemble8.jar`: A gallery of sample applications that demonstrate a large variety of JavaFX features, including animation, charts, and controls. For each sample, you can do the following on all platforms:
1.`Ensemble8.jar`: A gallery of sample applications that demonstrate a large variety of JavaFX features, including animation, charts, and controls. For each sample, you can do the following on all platforms:
* 查看正在运行的示例并与之交互
* 查看正在运行的示例并与之交互
...
@@ -75,23 +75,23 @@ JavaFX 示例文件夹内容
...
@@ -75,23 +75,23 @@ JavaFX 示例文件夹内容
![JavaFX samples](img/image00267.jpeg)
![JavaFX samples](img/image00267.jpeg)
Ensemble8 应用程序正在运行
Ensemble8 应用正在运行
2.`MandelbrotSet.jar`: A sample application that demonstrates the advantages of parallel execution done using the Java Parallel API.
2.`MandelbrotSet.jar`: A sample application that demonstrates the advantages of parallel execution done using the Java Parallel API.
应用程序使用 Mandelbrot 集算法渲染图像,并在输入参数范围内提供直观导航。
应用使用 Mandelbrot 集算法渲染图像,并在输入参数范围内提供直观导航。
更多信息可在`MandelbrotSet`文件夹内的`index.html`文件中找到。
更多信息可在`MandelbrotSet`文件夹内的`index.html`文件中找到。
![JavaFX samples](img/image00268.jpeg)
![JavaFX samples](img/image00268.jpeg)
MandelbrotSet 应用程序正在运行
MandelbrotSet 应用正在运行
3.`Modena.jar`: A sample application that demonstrates the look and feel of UI components using the `Modena` theme. It gives you the option to contrast the `Modena` and `Caspian` themes and explore various aspects of these themes.
3.`Modena.jar`: A sample application that demonstrates the look and feel of UI components using the `Modena` theme. It gives you the option to contrast the `Modena` and `Caspian` themes and explore various aspects of these themes.
![JavaFX samples](img/image00269.jpeg)
![JavaFX samples](img/image00269.jpeg)
Modena 应用程序正在运行
Modena 应用正在运行
4.`3DViewer.jar`: 3DViewer is a sample application that allows the user to navigate and examine a 3D scene with a mouse or a track pad. 3DViewer has importers for a subset of the features in **OBJ** and Maya files.
4.`3DViewer.jar`: 3DViewer is a sample application that allows the user to navigate and examine a 3D scene with a mouse or a track pad. 3DViewer has importers for a subset of the features in **OBJ** and Maya files.