diff --git a/docs/learn-javafx17/01.md b/docs/learn-javafx17/01.md
index 4c913d0c..17d278d2 100644
--- a/docs/learn-javafx17/01.md
+++ b/docs/learn-javafx17/01.md
@@ -67,41 +67,25 @@ JavaFX 最初是由 Chris Oliver 在 SeeBeyond 开发的,它被称为 F3 (Form
JavaFX 的第一个版本发布于 2008 年第四季度。版本号从 2.2 跃升到 8.0。从 Java 8 开始,Java SE 和 JavaFX 的版本号将是相同的。Java SE 和 JavaFX 的主要版本也将同时发布。JavaFX 的当前版本是 17.0 版。从 Java SE 11 开始,JavaFX 不再是 Java SE 运行时库的一部分。在 Java 11 中,您需要下载并包含 JavaFX 库来编译和运行您的 JavaFX 程序。表 1-1 包含 JavaFX 的发布列表。
表 1-1
-
-JavaFX 版本
-
-
-|
-
-出厂日期
-
- |
-
-版本
-
- |
-
-评论
-
- |
-| --- | --- | --- |
-| 2008 年第四季度 | JavaFX 1.0 | 这是 JavaFX 的最初版本。它使用一种称为 JavaFX Script 的声明语言来编写 JavaFX 代码。 |
-| Q1,2009 年 | JavaFX 1.1 | 引入了对 JavaFX Mobile 的支持。 |
-| Q2,2009 年 | JavaFX 1.2 | – |
-| Q2,2010 年 | JavaFX 1.3 | – |
-| 2010 年第三季度 | JavaFX 1.3.1 | – |
-| 2011 年第四季度 | java fx 2.0 | 不再支持 JavaFX 脚本。它使用 Java 语言编写 JavaFX 代码。对 JavaFX Mobile 的支持已取消。 |
-| 2012 年,Q2 | JavaFX 2.1 | 引入了对 Mac OS 桌面版的支持。 |
-| 2012 年第三季度 | JavaFX 2.2 | – |
-| 2014 年,Q1 | JavaFX 8.0 | JavaFX 版本从 2.2 跳到了 8.0。JavaFX 和 Java SE 版本将从 Java 8 开始匹配。 |
-| 2015 年,Q2 | JavaFX 9.0 | 公开的一些内部 API,JEP253。 |
-| 2018 年第三季度 | JavaFX 11.0.3 | JavaFX 不再是 Oracle Java JDK 的一部分。JavaFX 现在是一个可下载的开源模块,由 Gluon 公司提供。作为*端口*增加了对手持设备和其他嵌入式设备的支持。 |
-| 2019 年,Q1 | JavaFX 12.0.1 | 错误修复和一些增强。 |
-| 2019 年第三季度 | JavaFX 13.0 | 错误修复和一些增强。 |
-| Q1,2020 年 | JavaFX 14.0 | 在 WebView 中支持 HTTP/2。更多的错误修复和一些增强。 |
-| 2020 年第三季度 | JavaFX 15.0 | 提高稳定性(内存管理)。更多的错误修复和一些增强。 |
-| Q1,2021 年 | JavaFX 16.0 | JavaFX 模块必须从模块路径加载,而不是从类路径加载(编译器警告)。更多的错误修复和一些增强。 |
-| 2021 年第四季度 | JavaFX 17.0.1 | 小的改进和错误修复。 |
+| 出厂日期 | 版本 | 说明 |
+|----------------|--------------|----------------------------------------------------------------------|
+| 2008 年第四季度 | JavaFX 1.0 | 这是 JavaFX 的最初版本。它使用一种称为 JavaFX Script 的声明语言来编写 JavaFX 代码。 |
+| 2009 年 Q1 | JavaFX 1.1 | 引入了对 JavaFX Mobile 的支持。|
+| 2009 年 Q2 | JavaFX 1.2 | – |
+| 2010 年 Q2 | JavaFX 1.3 | – |
+| 2010 年第三季度 | JavaFX 1.3.1 | – |
+| 2011 年第四季度 | JavaFX 2.0 | 不再支持 JavaFX 脚本。它使用 Java 语言编写 JavaFX 代码。对 JavaFX Mobile 的支持已取消。 |
+| 2012 年 Q2 | JavaFX 2.1 | 引入了对 Mac OS 桌面版的支持。|
+| 2012 年第三季度 | JavaFX 2.2 | – |
+| 2014 年 Q1 | JavaFX 8.0 | JavaFX 版本从 2.2 跳到了 8.0。JavaFX 和 Java SE 版本将从 Java 8 开始匹配。 |
+| 2015 年 Q2 | JavaFX 9.0 | 公开的一些内部 API,JEP253。|
+| 2018 年第三季度 | JavaFX 11.0.3| JavaFX 不再是 Oracle Java JDK 的一部分。JavaFX 现在是一个可下载的开源模块,由 Gluon 公司提供。作为端口增加了对手持设备和其他嵌入式设备的支持。 |
+| 2019 年 Q1 | JavaFX 12.0.1| 错误修复和一些增强。|
+| 2019 年第三季度 | JavaFX 13.0 | 错误修复和一些增强。|
+| 2020 年 Q1 | JavaFX 14.0 | 在 WebView 中支持 HTTP/2。更多的错误修复和一些增强。|
+| 2020 年第三季度 | JavaFX 15.0 | 提高稳定性(内存管理)。更多的错误修复和一些增强。|
+| 2021 年 Q1 | JavaFX 16.0 | JavaFX 模块必须从模块路径加载,而不是从类路径加载(编译器警告)。更多的错误修复和一些增强。 |
+| 2021 年第四季度 | JavaFX 17.0.1| 小的改进和错误修复。|
发行说明显示了更多详细信息。你可以在 [`https://github.com/openjdk/jfx/tree/master/doc-files`](https://github.com/openjdk/jfx/tree/master/doc-files) 看到它们。
@@ -834,4 +818,4 @@ JavaFX 应用程序继承自`Application`类。JavaFX 运行时创建称为初
在 JavaFX 应用程序的生命周期中,JavaFX 运行时以特定的顺序调用 JavaFX `Application`类的预定义方法。首先,调用该类的`no-args`构造器,然后调用`init()`和`start()`方法。当应用程序终止时,会调用 stop()方法。您可以通过调用`Platform.exit()`方法来终止 JavaFX 应用程序。
-下一章将向您介绍 JavaFX 中的属性和绑定。
\ No newline at end of file
+下一章将向您介绍 JavaFX 中的属性和绑定。
diff --git a/docs/learn-javafx17/02.md b/docs/learn-javafx17/02.md
index 1528a499..98d55744 100644
--- a/docs/learn-javafx17/02.md
+++ b/docs/learn-javafx17/02.md
@@ -25,9 +25,9 @@ opens com.jdojo.binding to javafx.graphics, javafx.base;
```
-## 什么是财产?
+## 什么是属性?
-一个 Java 类可以包含两类成员:*字段*和*方法*。字段代表对象的状态,它们被声明为私有的。公共方法被称为*访问器*或*获取器*和*设置器*,用于读取和修改私有字段。简单地说,对于所有或部分私有字段,具有公共访问器的 Java 类被称为 Java *bean* ,访问器定义了 bean 的属性。Java bean 的属性允许用户定制其状态、行为或两者。
+一个 Java 类可以包含两类成员:**字段**和**方法**。字段代表对象的状态,它们被声明为私有的。公共方法被称为*访问器*或*获取器*和*设置器*,用于读取和修改私有字段。简单地说,对于所有或部分私有字段,具有公共访问器的 Java 类被称为 Java *bean* ,访问器定义了 bean 的属性。Java bean 的属性允许用户定制其状态、行为或两者。
Java beans 是可观察的。它们支持属性更改通知。当 Java bean 的公共属性发生变化时,会向所有感兴趣的侦听器发送通知。
@@ -102,11 +102,11 @@ public class Person {
```
-那么,什么是财产呢?一个*属性*是一个类的公共可访问属性,影响它的状态、行为或两者。即使属性是可公开访问的,它的使用(读/写)也会调用隐藏实际实现的方法来访问数据。属性是可观察的,所以当它的值改变时,感兴趣的人会得到通知。
+那么,什么是属性呢?一个*属性*是一个类的公共可访问属性,影响它的状态、行为或两者。即使属性是可公开访问的,它的使用(读/写)也会调用隐藏实际实现的方法来访问数据。属性是可观察的,所以当它的值改变时,感兴趣的人会得到通知。
Tip
-本质上,属性定义了对象的公共状态,可以读取、写入和观察对象的变化。与其他编程语言(如 C#)不同,Java 中的属性在语言级别不受支持。Java 对属性的支持来自 JavaBeans API 和设计模式。关于 Java 中属性的更多细节,请参考 JavaBeans 规范,可以从 [`www.oracle.com/java/technologies/javase/javabeans-spec.html`](http://www.oracle.com/java/technologies/javase/javabeans-spec.html) 下载。
+>本质上,属性定义了对象的公共状态,可以读取、写入和观察对象的变化。与其他编程语言(如 C#)不同,Java 中的属性在语言级别不受支持。Java 对属性的支持来自 JavaBeans API 和设计模式。关于 Java 中属性的更多细节,请参考 JavaBeans 规范,可以从 [`www.oracle.com/java/technologies/javase/javabeans-spec.html`](http://www.oracle.com/java/technologies/javase/javabeans-spec.html) 下载。
除了简单的属性,比如`Person` bean 的`name`属性,Java 还支持*索引*、*绑定*和*约束*属性。索引属性是使用索引访问的值的数组。索引属性是使用数组数据类型实现的。当绑定属性发生更改时,它会向所有侦听器发送通知。受约束的属性是侦听器可以否决更改的绑定属性。
@@ -343,15 +343,8 @@ Tip
包装单个值的属性类列表
-|
-类型
-
- |
-
-XXX 值
-
- |
+| 类型 | XXX 值|
| --- | --- |
| `int` | `Integer` |
| `long` | `Long` |
@@ -461,7 +454,7 @@ public class Book {
Tip
-按照惯例,类的属性的 getters 和 setters 被声明为`final`。添加了使用 JavaBeans 命名约定的额外的 getters 和 setters,以使该类能够与使用旧 JavaBeans 命名约定来标识类属性的旧工具和框架进行互操作。
+> 按照惯例,类的属性的 getters 和 setters 被声明为`final`。添加了使用 JavaBeans 命名约定的额外的 getters 和 setters,以使该类能够与使用旧 JavaBeans 命名约定来标识类属性的旧工具和框架进行互操作。
以下代码片段显示了对`Book`类的只读`ISBN`属性的声明:
@@ -641,13 +634,13 @@ JavaFX 属性 API 中的类和接口分布在不同的包中。那些包是`java
Tip
-所有 JavaFX 属性都是可观察的。
-
-只有当其内容的状态从有效变为无效时,`Observable`才会生成无效事件。也就是说,一行中的多个失效应该只生成一个失效事件。JavaFX 中的属性类遵循这个原则。
+>所有 JavaFX 属性都是可观察的。
+>
+>只有当其内容的状态从有效变为无效时,`Observable`才会生成无效事件。也就是说,一行中的多个失效应该只生成一个失效事件。JavaFX 中的属性类遵循这个原则。
Tip
-一个`Observable`产生一个失效事件并不一定意味着它的内容发生了变化。意思就是它的内容因为某种原因是无效的。例如,对一个`ObservableList`进行排序可能会生成一个无效事件。排序不会改变列表的内容;它只是对内容进行了重新排序。
+>一个`Observable`产生一个失效事件并不一定意味着它的内容发生了变化。意思就是它的内容因为某种原因是无效的。例如,对一个`ObservableList`进行排序可能会生成一个无效事件。排序不会改变列表的内容;它只是对内容进行了重新排序。
`ObservableValue`接口继承自`Observable`接口。一个`ObservableValue`包装了一个值,可以观察到它的变化。它有一个`getValue()`方法,返回它包装的值。它生成失效事件和变更事件。当`ObservableValue`中的值不再有效时,生成失效事件。值更改时会生成更改事件。您可以将一个`ChangeListener`注册到一个`ObservableValue`。每当`ChangeListener`的值发生变化时,就会调用`changed()`方法。`changed()`方法接收三个参数:对`ObservableValue`的引用、旧值和新值。
@@ -681,7 +674,7 @@ Tip
Tip
-所有读/写 JavaFX 属性都支持绑定。
+>所有读/写 JavaFX 属性都支持绑定。
图 2-2 显示了 JavaFX 中 integer 属性的部分类图。该图让您了解 JavaFX 属性 API 的复杂性。您不需要学习属性 API 中的所有类。在您的应用程序中,您将只使用其中的几个。
@@ -1346,22 +1339,11 @@ int value = sum.intValue(); // Get the int value
`NumberExpression`界面中方法的总结
-|
-
-方法名称
-
- |
-返回类型
-
- |
-
-描述
-
- |
+| 方法名称| 返回类型| 描述|
| --- | --- | --- |
-| `add()``subtract()``multiply()``divide()` | `NumberBinding` | 这些方法创建一个新的`NumberBinding`,它是`NumberExpression`的和、差、积和除,以及一个数值或一个`ObservableNumberValue`。 |
-| `greaterThan()``greaterThanOrEqualTo()``isEqualTo()``isNotEqualTo()``lessThan()``lessThanOrEqualTo()` | `BooleanBinding` | 这些方法创建一个新的`BooleanBinding`,存储`NumberExpression`和一个数值或`ObservableNumberValue`的比较结果。方法名足够清楚,可以告诉我们它们执行哪种比较。 |
+| `add()` `subtract()` `multiply()` `divide()` | `NumberBinding` | 这些方法创建一个新的`NumberBinding`,它是`NumberExpression`的和、差、积和除,以及一个数值或一个`ObservableNumberValue`。 |
+| `greaterThan()` `greaterThanOrEqualTo()` `isEqualTo()` `isNotEqualTo()` `lessThan()` `lessThanOrEqualTo()` | `BooleanBinding` | 这些方法创建一个新的`BooleanBinding`,存储`NumberExpression`和一个数值或`ObservableNumberValue`的比较结果。方法名足够清楚,可以告诉我们它们执行哪种比较。 |
| `negate()` | `NumberBinding` | 它创建了一个新的`NumberBinding`,它是对`NumberExpression`的否定。 |
| `asString()` | `StringBinding` | 它创建了一个`StringBinding`,将`NumberExpression`的值保存为一个`String`对象。此方法还支持基于区域设置的字符串格式。 |
@@ -1620,27 +1602,20 @@ Listing 2-15Using the When Class to Perform a Ternary Operation
`Bindings`类中方法的总结
-|
-
-方法名称
-
- |
-
-描述
- |
+| 方法名称| 描述|
| --- | --- |
-| `add()``subtract()``multiply()``divide()` | 它们通过对它的两个参数应用算术运算来创建一个绑定。至少有一个参数必须是`ObservableNumberValue`。如果参数之一是一个`double`,它的返回类型是`DoubleBinding`;否则,其返回类型为`NumberBinding`。 |
+| `add()` `subtract()` `multiply()` `divide()` | 它们通过对它的两个参数应用算术运算来创建一个绑定。至少有一个参数必须是`ObservableNumberValue`。如果参数之一是一个`double`,它的返回类型是`DoubleBinding`;否则,其返回类型为`NumberBinding`。 |
| `and()` | 它通过对它的两个参数应用布尔运算`and`来创建一个`BooleanBinding`。 |
-| `bindBidirectional()``unbindBidirectional()` | 它们创建和删除两个属性之间的双向绑定。 |
+| `bindBidirectional()` `unbindBidirectional()` | 它们创建和删除两个属性之间的双向绑定。 |
| `concat()` | 它返回一个保存其参数串联值的`StringExpression`。它需要一个`varargs`参数。 |
| `convert()` | 它返回一个包装其参数的`StringExpression`。 |
| `createXXXBinding()` | 它允许您创建一个`XXX`类型的定制绑定,其中`XXX`可以是`Boolean`、`Double`、`Float`、`Integer`、`String`和`Object`。 |
-| `equal()``notEqual()``equalIgnoreCase()``notEqualIgnoreCase()` | 他们创建了一个`BooleanBinding`,包装了两个参数相等或不相等的比较结果。这些方法的一些变体允许传递公差值。如果两个参数在公差范围内,则认为它们相等。通常,容差值用于比较浮点数。这些方法的忽略大小写变量只对`String`类型有效。 |
+| `equal()` `notEqual()` `equalIgnoreCase()` `notEqualIgnoreCase()` | 他们创建了一个`BooleanBinding`,包装了两个参数相等或不相等的比较结果。这些方法的一些变体允许传递公差值。如果两个参数在公差范围内,则认为它们相等。通常,容差值用于比较浮点数。这些方法的忽略大小写变量只对`String`类型有效。 |
| `format()` | 它创建一个`StringExpression`,保存根据指定格式`String`格式化的多个对象的值。 |
-| `greaterThan()``greaterThanOrEqual()``lessThan()``lessThanOrEqual()` | 他们创建一个`BooleanBinding`来包装比较参数的结果。 |
-| `isNotNull``isNull` | 他们创建一个`BooleanBinding`来包装与`null`进行比较的结果。 |
-| `max()``min()` | 它们创建一个绑定,保存该方法的两个参数的最大值和最小值。其中一个参数必须是`ObservableNumberValue`。 |
+| `greaterThan()` `greaterThanOrEqual()` `lessThan()` `lessThanOrEqual()` | 他们创建一个`BooleanBinding`来包装比较参数的结果。 |
+| `isNotNull` `isNull` | 他们创建一个`BooleanBinding`来包装与`null`进行比较的结果。 |
+| `max()` `min()` | 它们创建一个绑定,保存该方法的两个参数的最大值和最小值。其中一个参数必须是`ObservableNumberValue`。 |
| `negate()` | 它创建一个`NumberBinding`来保存一个`ObservableNumberValue`的否定。 |
| `not()` | 它创建一个`BooleanBinding`来保存一个`ObservableBooleanValue`的逆。 |
| `or()` | 它创建一个`BooleanBinding`,保存对它的两个`ObservableBooleanValue`参数应用条件`or`操作的结果。 |
diff --git a/docs/learn-javafx17/03.md b/docs/learn-javafx17/03.md
index ae28f065..47c3cdc7 100644
--- a/docs/learn-javafx17/03.md
+++ b/docs/learn-javafx17/03.md
@@ -314,22 +314,15 @@ Listing 3-3Detecting Changes in an ObservableList
`ListChangeListener.Change`类中的方法
-|
-方法
-
- |
-
-种类
-
- |
+| 方法| 种类|
| --- | --- |
| `ObservableList getList()` | 一般 |
-| `boolean next()``void reset()` | 光标移动 |
-| `boolean wasAdded()``boolean wasRemoved()``boolean wasReplaced()``boolean wasPermutated()``boolean wasUpdated()` | 更改类型 |
-| `int getFrom()``int getTo()` | 受影响范围 |
-| `int getAddedSize()``List getAddedSubList()` | 添加 |
-| `List getRemoved()``int getRemovedSize()` | 搬迁 |
+| `boolean next()` `void reset()` | 光标移动 |
+| `boolean wasAdded()` `boolean wasRemoved()` `boolean wasReplaced()` `boolean wasPermutated()` `boolean wasUpdated()` | 更改类型 |
+| `int getFrom()` `int getTo()` | 受影响范围 |
+| `int getAddedSize()` `List getAddedSubList()` | 添加 |
+| `List getRemoved()` `int getRemovedSize()` | 搬迁 |
| `int getPermutation(int oldIndex)` | 排列 |
`getList()`方法在更改后返回源列表。一个`ListChangeListener.Change`对象可以报告多个块中的变化。这可能一开始并不明显。考虑以下代码片段:
diff --git a/docs/learn-javafx17/05.md b/docs/learn-javafx17/05.md
index 2ab7daa2..1c37c404 100644
--- a/docs/learn-javafx17/05.md
+++ b/docs/learn-javafx17/05.md
@@ -52,19 +52,8 @@ JavaFX 类库提供了许多类来表示场景图中的分支和叶节点。`jav
`Scene`类的常用属性
-|
-类型
-
- |
-
-名字
-
- |
-
-属性和描述
-
- |
+| 类型 | 名字 | 属性和描述 |
| --- | --- | --- |
| `ObjectProperty` | `cursor` | 它为`Scene`定义了鼠标光标。 |
| `ObjectProperty` | `fill` | 它定义了`Scene`的背景填充。 |
@@ -142,15 +131,8 @@ scene.setCursor(waitCur);
平台类的方法
-|
-
-方法
- |
-
-描述
-
- |
+| 方法 | 描述 |
| --- | --- |
| `void exit()` | 它终止一个 JavaFX 应用程序。 |
| `boolean isFxApplicationThread()` | 如果调用线程是 JavaFX 应用程序线程,则返回`true`。否则返回`false`。 |
@@ -236,15 +218,8 @@ JavaFX 实现中的一些特性是可选的(或有条件的)。它们可能无
在`ConditionalFeature`枚举中定义的常量
-|
-
-枚举常量
-
- |
-
-描述
- |
+| 枚举常量 | 描述 |
| --- | --- |
| `EFFECT` | 指示滤镜效果的可用性,例如,倒影、阴影等。 |
| `INPUT_METHOD` | 指示文本输入法的可用性。 |
diff --git a/docs/learn-javafx17/06.md b/docs/learn-javafx17/06.md
index 4d281d8d..f88e3d00 100644
--- a/docs/learn-javafx17/06.md
+++ b/docs/learn-javafx17/06.md
@@ -162,19 +162,8 @@ opens com.jdojo.node to javafx.graphics, javafx.base;
为节点边界提供属性
-|
-界限类型
-
- |
-
-坐标空间
-
- |
-
-贡献者
-
- |
+| 界限类型 | 坐标空间 | 提供 |
| --- | --- | --- |
| `layoutBounds` | 节点(未转换) | 节点的几何形状非零笔划 |
| `boundsInLocal` | 节点(未转换) | 节点的几何形状非零笔划效果夹子 |
@@ -182,7 +171,7 @@ opens com.jdojo.node to javafx.graphics, javafx.base;
Tip
-`boundsInLocal`和`BoundsInParent`被称为物理或可视边界,因为它们对应于节点的可视外观。`layoutBounds`也被称为*逻辑边界*,因为它不一定对应于节点的物理边界。
+>`boundsInLocal`和`BoundsInParent`被称为物理或可视边界,因为它们对应于节点的可视外观。`layoutBounds`也被称为*逻辑边界*,因为它不一定对应于节点的物理边界。
### *布局绑定*属性
@@ -960,24 +949,13 @@ Listing 6-6Using Different Size-Related Methods of a Node
可调整大小的节点的大小相关方法
-|
-
-方法/属性
-
- |
-
-定义类别
-
- |
-
-使用
- |
+| 方法/属性 | 定义类别 | 使用 |
| --- | --- | --- |
-| **属性:**`prefWidth``prefHeight``minWidth``minHeight``maxWidth``maxHeight` | `Region`,`Control` | 它们定义了首选、最小和最大尺寸。默认情况下,它们被设置为标记值。使用它们来覆盖默认值。 |
-| **方法:**`double prefWidth(double h)``double prefHeight(double w)``double minWidth(double h)``double minHeight(double w)``double maxWidth(double h)``double maxHeight(double w)` | `Node` | 使用它们来获得节点的实际大小。如果节点没有内容偏向,则传递–1 作为参数。如果节点有内容偏差,则将另一维的实际值作为参数传递。请注意,这些方法没有对应的属性。 |
-| **属性:**`width``height` | `Region`,`Control` | 这些是*只读的*属性,保存可调整大小的节点的当前宽度和高度。 |
-| **方法:**`void setPrefSize(double w, double h)``void setMinSize(double w, double h)``void setMaxSize(double w, double h)` | `Region`,`Control` | 这些是覆盖节点的默认计算宽度和高度的方便方法。 |
+| **属性:**`prefWidth` `prefHeight` `minWidth` `minHeight` `maxWidth` `maxHeight` | `Region`,`Control` | 它们定义了首选、最小和最大尺寸。默认情况下,它们被设置为标记值。使用它们来覆盖默认值。 |
+| **方法:**`double prefWidth(double h)` `double prefHeight(double w)` `double minWidth(double h)` `double minHeight(double w)` `double maxWidth(double h)` `double maxHeight(double w)` | `Node` | 使用它们来获得节点的实际大小。如果节点没有内容偏向,则传递–1 作为参数。如果节点有内容偏差,则将另一维的实际值作为参数传递。请注意,这些方法没有对应的属性。 |
+| **属性:**`width` `height` | `Region`,`Control` | 这些是*只读的*属性,保存可调整大小的节点的当前宽度和高度。 |
+| **方法:**`void setPrefSize(double w, double h)` `void setMinSize(double w, double h)` `void setMaxSize(double w, double h)` | `Region`,`Control` | 这些是覆盖节点的默认计算宽度和高度的方便方法。 |
| **方法:**`void resize(double w, double h)` | `Node` | 它将节点调整到指定的宽度和高度。它由节点的父节点在布局期间调用。您不应该在代码中直接调用此方法。如果您需要设置节点的大小,请使用`setMinSize()`、`setPrefSize()`或`setMaxSize()`方法。此方法对不可调整大小的节点无效。 |
| **方法:**`void autosize()` | `Node` | 对于可调整大小的节点,它将布局边界设置为其当前首选的宽度和高度。它会处理内容偏差。此方法对不可调整大小的节点无效。 |
diff --git a/docs/learn-javafx17/07.md b/docs/learn-javafx17/07.md
index 02f324cf..82dbc5c6 100644
--- a/docs/learn-javafx17/07.md
+++ b/docs/learn-javafx17/07.md
@@ -792,20 +792,7 @@ r.setFill(rg);
用于确定径向颜色渐变形状的标准
-
-|
-
-比例论点
-
- |
-
-填充区域的边界框
-
- |
-
-梯度形状
-
- |
+| 比例论点 | 填充区域的边界框 | 梯度形状 |
| --- | --- | --- |
| 真实的 | 平方 | 圆 |
| 真实的 | 非方形 | 椭圆 |
diff --git a/docs/learn-javafx17/09.md b/docs/learn-javafx17/09.md
index f65348e2..c1e9181f 100644
--- a/docs/learn-javafx17/09.md
+++ b/docs/learn-javafx17/09.md
@@ -48,19 +48,8 @@ JavaFX 中所有事件共有的三个属性由三个不同类的对象表示。
事件处理中涉及的类
-|
-名字
-
- |
-
-类别/接口
-
- |
-
-描述
-
- |
+| 名字 | 类别/接口 | 描述 |
| --- | --- | --- |
| `Event` | 班级 | 此类的一个实例表示一个事件。存在几个`Event`类的子类来表示特定类型的事件。 |
| `EventTarget` | 连接 | 此接口的一个实例代表一个事件目标。 |
@@ -906,15 +895,8 @@ Listing 9-6Determining the Mouse Location During Mouse Events
`MouseButton`枚举的常量
-|
-
-*鼠标按钮*枚举常量
-
- |
-描述
-
- |
+| 鼠标按钮枚举常量 | 描述 |
| --- | --- |
| `NONE` | 它表示没有按钮。 |
| `PRIMARY` | 它代表主要按钮。通常,它是鼠标中的左键。 |
@@ -932,15 +914,8 @@ Listing 9-6Determining the Mouse Location During Mouse Events
`MouseEvent`类中与鼠标按钮状态相关的方法
-|
-
-方法
-
- |
-描述
-
- |
+| 方法 | 描述 |
| --- | --- |
| `MouseButton getButton()` | 它返回负责鼠标事件的鼠标按钮。 |
| `int getClickCount()` | 它返回与鼠标事件相关的鼠标点击次数。 |
@@ -977,15 +952,8 @@ JavaFX 提供了一个*上下文菜单事件*,它是一种特定类型的输
`MouseEvent`类中与修饰键状态相关的方法
-|
-
-方法
-
- |
-描述
-
- |
+| 方法 | 描述 |
| --- | --- |
| `boolean isAltDown()` | 如果这个鼠标事件的 Alt 键被按下,它将返回`true`。否则返回`false`。 |
| `boolean isControlDown()` | 如果这个鼠标事件的 Ctrl 键被按下,它将返回`true`。否则返回`false`。 |
@@ -1405,15 +1373,8 @@ Listing 9-10Using the Mouse-Entered-Target and Mouse-Exited-Target Events
在`KeyEvent`类中的常量代表关键事件类型
-|
-
-常量
-
- |
-描述
-
- |
+| 常量 | 描述 |
| --- | --- |
| `ANY` | 它是其他关键事件类型的超类型。 |
| `KEY_PRESSED` | 它在按键时发生。 |
@@ -1435,22 +1396,11 @@ Tip
返回关键细节的`KeyEvent`类中的方法
-|
-
-方法
-
- |
-有效期为
-
- |
-
-描述
-
- |
+| 方法 | 有效期为 | 描述 |
| --- | --- | --- |
-| `KeyCode getCode()` | `KEY_PRESSED``KEY_RELEASED` | `KeyCode`枚举包含一个常量来表示键盘上的所有键。该方法返回与被按下或释放的键相关联的`KeyCode`枚举常量。对于击键事件,它总是返回`KeyCode.UNDEFINED`,因为击键事件不一定由一次击键触发。 |
-| `String getText()` | `KEY_PRESSED``KEY_RELEASED` | 它返回与按键和按键释放事件相关联的`KeyCode`的`String`描述。对于键类型的事件,它总是返回一个空字符串。 |
+| `KeyCode getCode()` | `KEY_PRESSED` `KEY_RELEASED` | `KeyCode`枚举包含一个常量来表示键盘上的所有键。该方法返回与被按下或释放的键相关联的`KeyCode`枚举常量。对于击键事件,它总是返回`KeyCode.UNDEFINED`,因为击键事件不一定由一次击键触发。 |
+| `String getText()` | `KEY_PRESSED` `KEY_RELEASED` | 它返回与按键和按键释放事件相关联的`KeyCode`的`String`描述。对于键类型的事件,它总是返回一个空字符串。 |
| `String getCharacter()` | `KEY_TYPED` | 它返回一个字符或一系列与键入事件相关的字符作为一个`String`。对于按键和按键释放事件,它总是返回`KeyEvent.CHAR_UNDEFINED`。 |
有趣的是,`getCharacter()`方法的返回类型是`String`,而不是`char`。这个设计是有意的。基本多语言平面之外的 Unicode 字符不能用一个字符表示。一些设备可以通过一次击键产生多个字符。`getCharacter()`方法的返回类型`String`涵盖了这些奇怪的情况。
@@ -1607,15 +1557,8 @@ Listing 9-12Using the Key-Typed Event
`WindowEvent`类中的常量来表示窗口事件类型
-|
-
-常量
-
- |
-
-描述
- |
+| 常量 | 描述 |
| --- | --- |
| `ANY` | 它是所有其他窗口事件类型的超类型。 |
| `WINDOW_SHOWING` | 它发生在窗口显示之前。 |
diff --git a/docs/learn-javafx17/10.md b/docs/learn-javafx17/10.md
index 29d736c1..3e24a318 100644
--- a/docs/learn-javafx17/10.md
+++ b/docs/learn-javafx17/10.md
@@ -100,17 +100,10 @@ JavaFX 中容器类的类图
容器类别列表
-|
-集装箱等级
-
- |
-
-描述
-
- |
+| 集装箱等级 | 描述 |
| --- | --- |
-| `Group` | A `Group`将效果和变换一起应用到它的所有子节点。 |
+| `Group` | 一个 `Group`将效果和变换一起应用到它的所有子节点。 |
| `Pane` | 它用于其子节点的绝对定位。 |
| `HBox` | 它将子对象水平排列在一行中。 |
| `VBox` | 它将子元素垂直排列在一列中。 |
@@ -124,7 +117,7 @@ JavaFX 中容器类的类图
## 向布局窗格添加子项
-容器是用来装孩子的。您可以在创建容器对象时或创建后将子对象添加到容器中。所有容器类都提供接受 var-args `Node`类型参数的构造器来添加初始的子集合。有些容器提供构造器来添加初始的一组子容器,并为容器设置初始属性。
+容器是用来装子节点的。您可以在创建容器对象时或创建后将子对象添加到容器中。所有容器类都提供接受 var-args `Node`类型参数的构造器来添加初始的子集合。有些容器提供构造器来添加初始的一组子容器,并为容器设置初始属性。
创建容器后,您还可以随时向容器中添加子容器。容器将它们的子容器存储在一个可观察的列表中,可以使用`getChildren()`方法检索该列表。向容器添加节点就像向可观察列表添加节点一样简单。下面的代码片段显示了如何在创建`HBox`时和创建后向其添加子元素:
@@ -148,7 +141,7 @@ hBox3.getChildren().addAll(okBtn, cancelBtn);
Tip
-当你需要在一个容器中添加多个子节点时,使用`ObservableList`的`addAll()`方法,而不是多次使用`add()`方法。
+>当你需要在一个容器中添加多个子节点时,使用`ObservableList`的`addAll()`方法,而不是多次使用`add()`方法。
## 实用程序类和枚举
@@ -975,19 +968,8 @@ Listing 10-9Using the HBox Layout Pane
HBox 类中声明的属性
-|
-
-财产
-
- |
-
-类型
-
- |
-描述
-
- |
+| 财产 | 类型 | 描述 |
| --- | --- | --- |
| `alignment` | `ObjectProperty` | 它指定子元素相对于`HBox`内容区域的对齐方式。如果垂直对齐设置为`BASELINE`,则`fillHeight`属性被忽略。默认值为`Pos.TOP_LEFT`。 |
| `fillHeight` | `BooleanProperty` | 它指定是否调整可调整大小的子元素的大小以填充`HBox`的整个高度,或者给它们自己喜欢的高度。如果垂直对齐设置为`BASELINE`,该属性被忽略。默认值为 true。 |
@@ -1169,19 +1151,8 @@ Listing 10-13Using the VBox Layout Pane
VBox 类中声明的属性
-|
-
-财产
-
- |
-
-类型
- |
-
-描述
-
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `alignment` | `ObjectProperty` | 它指定子元素相对于`VBox`内容区域的对齐方式。默认值为`Pos.TOP_LEFT`。 |
| `fillWidth` | `BooleanProperty` | 它指定可调整大小的子元素是调整大小以填充`VBox`的整个宽度,还是给它们自己喜欢的宽度。默认值为 true。 |
@@ -1375,19 +1346,8 @@ Listing 10-17Using a Horizontal FlowPane
FlowPane 类中声明的属性列表
-|
-
-财产
- |
-
-类型
-
- |
-
-描述
-
- |
+| 财产 | 类型 | 描述 |
| --- | --- | --- |
| `alignment` | `ObjectProperty` | 它指定了行和列相对于`FlowPane`内容区域的对齐方式。默认值为`Pos.TOP_LEFT`。 |
| `rowValignment` | `ObjectProperty` | 它指定了水平`FlowPane`中每一行内的子元素的垂直对齐。对于垂直`FlowPane`它被忽略。 |
@@ -1880,19 +1840,8 @@ root.setPrefRows(3);
TilePane 类中声明的属性列表
-|
-
-财产
-
- |
-
-类型
- |
-
-描述
-
- |
+| 属性 | 类型 | 描述|
| --- | --- | --- |
| `alignment` | `ObjectProperty` | 它指定了`TilePane`的内容相对于其内容区域的对齐方式。默认为`Pos.TOP_LEFT`。 |
| `tileAlignment` | `ObjectProperty` | 它指定了平铺中所有子元素的默认对齐方式。默认为`Pos.CENTER`。 |
@@ -2363,19 +2312,8 @@ Listing 10-30Using a GridPane to Create Forms
GridPane 类中声明的属性列表
-|
-
-财产
-
- |
-
-类型
-
- |
-描述
-
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `alignment` | `ObjectProperty` | 它指定了网格(`GridPane`的内容)相对于其内容区域的对齐方式。默认为`Pos.TOP_LEFT`。 |
| `gridLinesVisible` | `BooleanProperty` | 建议仅用于调试目。它控制网格线是否可见。它默认为 false。 |
@@ -2469,20 +2407,8 @@ Listing 10-31Using the hgap and vgap Properties of a GridPane
RowConstraints 类的属性
-
-|
-
-**属性**
-
- |
-
-**类型**
-
- |
-
-**描述**
- |
+| **属性** | **类型** | **描述** |
| --- | --- | --- |
| `fillHeight` | `BooleanProperty` | 它指定行中的子级是否扩展到超出其首选高度,以填充行的高度。默认值为真。 |
| `valignment` | `ObjectProperty` | 它指定行中子级的默认垂直对齐方式。其默认值为`null`。默认情况下,一行中的所有子元素都与`VPos.CENTER`垂直对齐。行中的单个子节点可能会覆盖此约束。 |
@@ -2495,19 +2421,8 @@ RowConstraints 类的属性
ColumnConstraints 类的属性列表
-|
-财产
-
- |
-
-类型
-
- |
-
-描述
-
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `fillWidth` | `BooleanProperty` | 它指定列中的子级是否扩展到超出其首选宽度,以填充列的宽度。默认值为 true。 |
| `halignment` | `ObjectProperty` | 它指定列中子级的默认水平对齐方式。其默认值为`null`。默认情况下,一列中的所有子元素都与`HPos.LEFT`水平对齐。列中的单个子节点可能会覆盖此约束。 |
@@ -2634,19 +2549,8 @@ Tip
可以为 GridPane 中的子级设置的约束列表
-|
-
-限制
-
- |
-类型
-
- |
-
-描述
-
- |
+| 限制 | 类型 | 描述 |
| --- | --- | --- |
| `columnIndex` | `Integer` | 这是子节点布局区域开始的列索引。第一列的索引为 0。默认值为 0。 |
| `rowIndex` | `Integer` | 这是子节点布局区域开始的行索引。第一行的索引为 0。默认值为 0。 |
@@ -2826,19 +2730,8 @@ Listing 10-35Using Default Positions in an AnchorPane
可以为 AnchorPane 中的子级设置的约束列表
-|
-
-限制
-
- |
-
-类型
-
- |
-描述
-
- |
+| 约束 | 类型 | 描述 |
| --- | --- | --- |
| `topAnchor` | `Double` | 它指定了`AnchorPane`的内容区域的上边缘与子节点的上边缘之间的距离。 |
| `rightAnchor` | `Double` | 它指定了`AnchorPane`的内容区域的右边缘与子节点的右边缘之间的距离。 |
@@ -3001,19 +2894,8 @@ Listing 10-39Embedding Nodes Other Than Text Nodes in a TextFlow
TextFlow 类中声明的属性列表
-|
-
-财产
-
- |
-
-类型
-
- |
-
-描述
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `lineSpacing` | `DoubleProperty` | 它指定行与行之间的垂直间距。其默认值为 0px。 |
| `tabSize` | `IntegerProperty` | 制表符在空格中的大小。 |
diff --git a/docs/learn-javafx17/12.md b/docs/learn-javafx17/12.md
index 559141db..bc8097eb 100644
--- a/docs/learn-javafx17/12.md
+++ b/docs/learn-javafx17/12.md
@@ -64,19 +64,8 @@ JavaFX 中控件类的类图
在`Control`类中声明的属性
-|
-财产
-
- |
-
-类型
-
- |
-
-描述
-
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `contextMenu` | `ObjectProperty` | 指定控件的内容菜单。 |
| `skin` | `ObjectProperty>` | 指定控件的外观。 |
@@ -109,19 +98,8 @@ JavaFX 中控件类的类图
在`Labeled`类中声明的属性
-|
-
-财产
-
- |
-类型
-
- |
-
-描述
-
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `alignment` | `ObjectProperty` | 它指定内容区域内控件内容的对齐方式。当内容区域大于内容(文本+图形)时,其效果是可见的。默认值为`Pos.CENTER_LEFT`。 |
| `contentDisplay` | `ObjectProperty` | 它指定图形相对于文本的位置。 |
@@ -678,19 +656,8 @@ agreeCbx.setAllowIndeterminate(true);
根据复选框的不确定属性和选定属性确定其状态
-|
-
-**不确定**
-
- |
-
-**选中**
-
- |
-状态
-
- |
+| **不确定** | **选中** | 状态 |
| --- | --- | --- |
| `false` | `true` | 检查 |
| `false` | `false` | 未加抑制的 |
@@ -859,19 +826,8 @@ seasons.getItems().addAll("Spring", "Summer", "Fall", "Winter");
在`ChoiceBox`类中声明的属性
-|
-
-财产
-
- |
-
-类型
- |
-
-描述
-
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `converter` | `ObjectProperty >` | 它充当一个转换器对象,调用该对象的`toString()`方法来获取列表中项目的字符串表示。 |
| `items` | `ObjectProperty >` | 这是要在`ChoiceBox`中显示的选项列表。 |
@@ -879,6 +835,7 @@ seasons.getItems().addAll("Spring", "Summer", "Fall", "Winter");
| `showing` | `ReadOnlyBooleanProperty` | 它的 true 值指示控件正在向用户显示选项列表。它的 false 值表示选项列表是折叠的。 |
| `value` | `ObjectProperty` | 这是在`ChoiceBox`中选择的项目。 |
+\

图 12-13
@@ -887,7 +844,7 @@ seasons.getItems().addAll("Spring", "Summer", "Fall", "Winter");
Tip
-您并不局限于使用鼠标或键盘来显示项目列表。您可以分别使用`show()`和`hide()`方法以编程方式显示和隐藏列表。
+>您并不局限于使用鼠标或键盘来显示项目列表。您可以分别使用`show()`和`hide()`方法以编程方式显示和隐藏列表。
`ChoiceBox`的`value`属性存储控件中选中的项目。其类型为`ObjectProperty`,其中`T`为控件的类型参数。如果用户没有选择项目,其值为`null`。下面的代码片段设置了`value`属性:
@@ -2313,19 +2270,8 @@ JavaFX 提供了名为`HTMLEditor`的富文本编辑控件。我将在本章后
在`TextInputControl`类中声明的属性
-|
-
-财产
- |
-
-类型
-
- |
-
-描述
-
- |
+| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `anchor` | `ReadOnlyIntegerProperty` | 它是文本选择的锚点。它位于所选内容中插入符号位置的另一端。 |
| `caretPosition` | `ReadOnlyIntegerProperty` | 它是插入符号在文本中的当前位置。 |
@@ -4429,15 +4375,8 @@ Listing 12-38Using Menus in a Shape Drawing Application
菜单相关组件的 CSS 默认样式类名
-|
-
-菜单组件
-
- |
-
-样式类名
- |
+| 菜单组件 | 样式类名 |
| --- | --- |
| `MenuBar` | `menu-bar` |
| `Menu` | `menu` |
diff --git a/docs/learn-javafx17/14.md b/docs/learn-javafx17/14.md
index 5ff69231..64833fdd 100644
--- a/docs/learn-javafx17/14.md
+++ b/docs/learn-javafx17/14.md
@@ -1192,23 +1192,8 @@ largeArcFlag 和 sweepFlag 属性对 ArcTo path 元素的影响
基于 largeArcFlag 和 sweepFlag 属性选择弧段和椭圆
-|
-**长焦**
-
- |
-
-**扫雷日**
-
- |
-
-弧型
-
- |
-
-椭圆
-
- |
+| **长焦** | **扫雷日** | 弧型 | 椭圆 |
| --- | --- | --- | --- |
| `true` | `true` | 更大的 | 椭圆-2 |
| `true` | `false` | 更大的 | 椭圆-1 |
@@ -1650,23 +1635,8 @@ Tip
SVG 路径命令列表
-|
-
-命令
-
- |
-
-参数
-
- |
-
-命令名称
-
- |
-
-路径 API 类
- |
+| 命令 | 参数 | 命令名称 | 路径 API 类 |
| --- | --- | --- | --- |
| `M` | `(x, y)+` | `moveto` | `MoveTo` |
| `L` | (x,y)+ | `lineto` | `LineTo` |
diff --git a/docs/learn-javafx17/17.md b/docs/learn-javafx17/17.md
index 0f2347fc..7872f1a5 100644
--- a/docs/learn-javafx17/17.md
+++ b/docs/learn-javafx17/17.md
@@ -1055,15 +1055,8 @@ Listing 17-9Using an ImageInput Effect As an Input to a DropShadow Effect
`BlendMode`枚举中的常量及其描述
-|
-BlendMode Enum 常量
-
- |
-
-描述
-
- |
+| BlendMode Enum 常量 | 描述 |
| --- | --- |
| `ADD` | 它将顶部和底部输入中的像素的颜色(红色、绿色和蓝色)和 alpha 值相加,以获得新的分量值。 |
| `MULTIPLY` | 它将两个输入的颜色分量相乘。 |
diff --git a/docs/learn-javafx17/20.md b/docs/learn-javafx17/20.md
index b7b5ce21..e1c9d2c7 100644
--- a/docs/learn-javafx17/20.md
+++ b/docs/learn-javafx17/20.md
@@ -150,39 +150,8 @@ Note
世界上一些国家目前和估计的人口(百万)
-| |
-One thousand nine hundred and fifty
-
- |
-
-Two thousand
-
- |
-
-Two thousand and fifty
-
- |
-
-Two thousand one hundred
-
- |
-
-Two thousand one hundred and fifty
-
- |
-
-Two thousand two hundred
-
- |
-
-Two thousand two hundred and fifty
-
- |
-
-Two thousand three hundred
-
- |
+| | One thousand nine hundred and fifty | Two thousand | Two thousand and fifty | Two thousand one hundred | Two thousand one hundred and fifty | Two thousand two hundred | Two thousand two hundred and fifty | Two thousand three hundred |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **中国** | Five hundred and fifty-five | One thousand two hundred and seventy-five | One thousand three hundred and ninety-five | One thousand one hundred and eighty-two | One thousand one hundred and forty-nine | One thousand two hundred and one | One thousand two hundred and forty-seven | One thousand two hundred and eighty-five |
| **印度** | Three hundred and fifty-eight | One thousand and seventeen | One thousand five hundred and thirty-one | One thousand four hundred and fifty-eight | One thousand three hundred and eight | One thousand three hundred and four | One thousand three hundred and forty-two | One thousand three hundred and seventy-two |