From f83ba14d79a6c350cae834f0e8f9d2666f4df073 Mon Sep 17 00:00:00 2001 From: mloluyu Date: Fri, 23 Jan 2026 09:55:21 +0800 Subject: [PATCH 1/2] Update JavaFX version history and remove duplicates Removed redundant table and updated JavaFX version history. --- docs/learn-javafx17/01.md | 56 ++++++++++++++------------------------- 1 file changed, 20 insertions(+), 36 deletions(-) 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 中的属性和绑定。 From bd0bca74027081429d0fe1827cd0722dc1daecd5 Mon Sep 17 00:00:00 2001 From: mloluyu Date: Fri, 23 Jan 2026 12:52:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmarkdown=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/learn-javafx17/02.md | 67 ++++++----------- docs/learn-javafx17/03.md | 19 ++--- docs/learn-javafx17/05.md | 31 +------- docs/learn-javafx17/06.md | 36 ++-------- docs/learn-javafx17/07.md | 15 +--- docs/learn-javafx17/09.md | 75 +++----------------- docs/learn-javafx17/10.md | 146 ++++---------------------------------- docs/learn-javafx17/12.md | 77 +++----------------- docs/learn-javafx17/14.md | 34 +-------- docs/learn-javafx17/17.md | 9 +-- docs/learn-javafx17/20.md | 33 +-------- 11 files changed, 73 insertions(+), 469 deletions(-) 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`中选择的项目。 | +\ ![img/336502_2_En_12_Fig13_HTML.jpg](img/336502_2_En_12_Fig13_HTML.jpg) 图 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 |