- JavaFX 教程
- JavaFX - 首页
- JavaFX - 概述
- JavaFX 安装和架构
- JavaFX - 环境
- JavaFX - 使用 Netbeans 安装
- JavaFX - 使用 Eclipse 安装
- JavaFX - 使用 Visual Studio Code 安装
- JavaFX - 架构
- JavaFX - 应用程序
- JavaFX 2D 形状
- JavaFX - 2D 形状
- JavaFX - 绘制线条
- JavaFX - 绘制矩形
- JavaFX - 绘制圆角矩形
- JavaFX - 绘制圆形
- JavaFX - 绘制椭圆
- JavaFX - 绘制多边形
- JavaFX - 绘制折线
- JavaFX - 绘制三次贝塞尔曲线
- JavaFX - 绘制二次贝塞尔曲线
- JavaFX - 绘制弧线
- JavaFX - 绘制 SVGPath
- JavaFX 2D 对象的属性
- JavaFX - 描边类型属性
- JavaFX - 描边宽度属性
- JavaFX - 描边填充属性
- JavaFX - 描边属性
- JavaFX - 描边连接属性
- JavaFX - 描边斜接限制属性
- JavaFX - 描边端点属性
- JavaFX - 平滑属性
- JavaFX 路径对象
- JavaFX - 路径对象
- JavaFX - LineTo 路径对象
- JavaFX - HLineTo 路径对象
- JavaFX - VLineTo 路径对象
- JavaFX - QuadCurveTo 路径对象
- JavaFX - CubicCurveTo 路径对象
- JavaFX - ArcTo 路径对象
- JavaFX 颜色和纹理
- JavaFX - 颜色
- JavaFX - 线性渐变图案
- JavaFX - 径向渐变图案
- JavaFX 文本
- JavaFX - 文本
- JavaFX 效果
- JavaFX - 效果
- JavaFX - 颜色调整效果
- JavaFX - 颜色输入效果
- JavaFX - 图像输入效果
- JavaFX - 混合效果
- JavaFX - 辉光效果
- JavaFX - 泛光效果
- JavaFX - 方框模糊效果
- JavaFX - 高斯模糊效果
- JavaFX - 运动模糊效果
- JavaFX - 反射效果
- JavaFX - 棕褐色效果
- JavaFX - 阴影效果
- JavaFX - 投影效果
- JavaFX - 内阴影效果
- JavaFX - 照明效果
- JavaFX - Light.Distant 效果
- JavaFX - Light.Spot 效果
- JavaFX - Point.Spot 效果
- JavaFX - 位移映射
- JavaFX - 透视变换
- JavaFX 动画
- JavaFX - 动画
- JavaFX - 旋转转换
- JavaFX - 缩放转换
- JavaFX - 平移转换
- JavaFX - 淡入淡出转换
- JavaFX - 填充转换
- JavaFX - 描边转换
- JavaFX - 顺序转换
- JavaFX - 并行转换
- JavaFX - 暂停转换
- JavaFX - 路径转换
- JavaFX 图像
- JavaFX - 图像
- JavaFX 3D 形状
- JavaFX - 3D 形状
- JavaFX - 创建立方体
- JavaFX - 创建圆柱体
- JavaFX - 创建球体
- 3D 对象的属性
- JavaFX - 剔除面属性
- JavaFX - 绘制模式属性
- JavaFX - 材质属性
- JavaFX 事件处理
- JavaFX - 事件处理
- JavaFX - 使用便捷方法
- JavaFX - 事件过滤器
- JavaFX - 事件处理程序
- JavaFX UI 控件
- JavaFX - UI 控件
- JavaFX - 列表视图
- JavaFX - 手风琴
- JavaFX - 按钮栏
- JavaFX - 选择框
- JavaFX - HTMLEditor
- JavaFX - 菜单栏
- JavaFX - 分页
- JavaFX - 进度指示器
- JavaFX - 滚动窗格
- JavaFX - 分隔符
- JavaFX - 滑块
- JavaFX - 微调器
- JavaFX - 分割窗格
- JavaFX - 表格视图
- JavaFX - 标签页窗格
- JavaFX - 工具栏
- JavaFX - 树视图
- JavaFX - 标签
- JavaFX - 复选框
- JavaFX - 单选按钮
- JavaFX - 文本字段
- JavaFX - 密码字段
- JavaFX - 文件选择器
- JavaFX - 超链接
- JavaFX - 工具提示
- JavaFX - 警报
- JavaFX - 日期选择器
- JavaFX - 文本区域
- JavaFX 图表
- JavaFX - 图表
- JavaFX - 创建饼图
- JavaFX - 创建折线图
- JavaFX - 创建面积图
- JavaFX - 创建条形图
- JavaFX - 创建气泡图
- JavaFX - 创建散点图
- JavaFX - 创建堆叠面积图
- JavaFX - 创建堆叠条形图
- JavaFX 布局窗格
- JavaFX - 布局窗格
- JavaFX - HBox 布局
- JavaFX - VBox 布局
- JavaFX - BorderPane 布局
- JavaFX - StackPane 布局
- JavaFX - TextFlow 布局
- JavaFX - AnchorPane 布局
- JavaFX - TilePane 布局
- JavaFX - GridPane 布局
- JavaFX - FlowPane 布局
- JavaFX CSS
- JavaFX - CSS
- JavaFX 中的媒体
- JavaFX - 处理媒体
- JavaFX - 播放视频
- JavaFX 有用资源
- JavaFX - 快速指南
- JavaFX - 有用资源
- JavaFX - 讨论
JavaFX - 树视图
TreeView 是一种图形用户界面组件,用于显示项目的层次结构。它由一个根节点和任意数量的子节点组成。主要地,树视图用于组织具有层次结构的数据。它提供了对数据及其与其他组件关系的更好理解。在下图中,我们可以看到组件的树视图。
JavaFX 中的 TreeView
在 JavaFX 中,树视图由名为 TreeView 的类表示。此类属于 javafx.scene.control 包。通过实例化此类,我们可以在 JavaFX 中创建一个树视图。TreeView 类的构造函数如下所示:
TreeView() - 这是默认构造函数,用于构造一个空的树视图。
TreeView(TreeItem rootNode) - 它创建一个新的树视图,并使用指定的根节点。
如何在 JavaFX 中创建 TreeView?
按照以下步骤在 JavaFX 中创建树视图。
步骤 1:创建 TreeView 的根节点
首先,为所有项目的列表创建容器。在这种情况下,根节点是容器,因为它包含所有子节点。要创建根节点,我们使用 TreeItem 类,它是 javafx.scene.control 包的一部分。将根节点的名称作为参数值传递给此类的构造函数。
// Creating the root node
TreeItem<String> root = new TreeItem<>("Smartphones");
步骤 2:创建 TreeView 的子节点
再次使用 TreeItem 类创建子节点。创建子节点后,使用 getChildren() 方法以及 addAll() 将所需项目添加到其中。
TreeItem<String> ios = new TreeItem<>("iOS");
ios.getChildren().addAll(
new TreeItem<>("iPhone 15 Plus"),
new TreeItem<>("iPhone 14")
);
步骤 3:将子节点添加到根节点
要将子节点添加到根节点,请将子节点的名称作为参数值传递给 addAll() 方法,如下面的代码块所示:
// Add the child nodes to the root node root.getChildren().addAll(android, ios);
步骤 4:实例化 TreeView 类
要创建树视图,请实例化 TreeView 类并将根节点作为参数值传递给其构造函数,如下面的代码所示:
// Create the TreeView and add the root node TreeView<String> treesV = new TreeView<>(root);
步骤 5:启动应用程序
创建树视图后,请按照以下步骤正确启动应用程序:
首先,通过将 TreeView 对象作为参数值传递给其构造函数来实例化名为 Scene 的类。我们还可以将应用程序屏幕的尺寸作为可选参数传递给此构造函数。
然后,使用 Stage 类的 setTitle() 方法设置舞台的标题。
现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到舞台。
使用名为 show() 的方法显示场景的内容。
最后,借助 launch() 方法启动应用程序。
示例
以下是使用 JavaFX 创建 TreeView 的程序。将此代码保存在名为 JavafxTreeview.java 的文件中。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.stage.Stage;
public class JavafxTreeview extends Application {
@Override
public void start(Stage stage) throws Exception {
// Creating the root node
TreeItem<String> root = new TreeItem<>("Smartphones");
root.setExpanded(true);
// Creating its child nodes
TreeItem<String> android = new TreeItem<>("Android");
android.getChildren().addAll(
new TreeItem<>("Samsung Galaxy S23 Ultra"),
new TreeItem<>("Xiaomi Redmi Note 13 Pro"),
new TreeItem<>("OnePlus 11R")
);
TreeItem<String> ios = new TreeItem<>("iOS");
ios.getChildren().addAll(
new TreeItem<>("iPhone 15 Plus"),
new TreeItem<>("iPhone 14")
);
// Add the child nodes to the root node
root.getChildren().addAll(android, ios);
// Create the TreeView and add the root node
TreeView<String> treesV = new TreeView<>(root);
// Create a scene and add the TreeView
Scene scene = new Scene(treesV, 400, 300);
stage.setTitle("TreeView in JavaFX");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
使用以下命令从命令提示符编译并执行保存的 Java 文件:
javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxTreeview.java java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxTreeview
输出
执行上述程序后,会生成一个 JavaFX 窗口,其中显示了一个 TreeView,其中包含如下所示的智能手机列表。
设置 TreeView 的鼠标事件
如果我们想显示用户点击了哪些项目,那么我们可以使用 setOnMouseClicked() 方法,并传递一个 lambda 表达式,如下面的 JavaFX 代码所示。将此代码保存在名为 JavafxTreeview.java 的文件中。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.stage.Stage;
public class JavafxTreeview extends Application {
@Override
public void start(Stage stage) throws Exception {
// Creating the root node
TreeItem<String> root = new TreeItem<>("Smartphones");
root.setExpanded(true);
// Creating its child nodes
TreeItem<String> android = new TreeItem<>("Android");
android.getChildren().addAll(
new TreeItem<>("Samsung Galaxy S23 Ultra"),
new TreeItem<>("Xiaomi Redmi Note 13 Pro"),
new TreeItem<>("OnePlus 11R")
);
TreeItem<String> ios = new TreeItem<>("iOS");
ios.getChildren().addAll(
new TreeItem<>("iPhone 15 Plus"),
new TreeItem<>("iPhone 14")
);
// Add the child nodes to the root node
root.getChildren().addAll(android, ios);
// Create the TreeView and add the root node
TreeView<String> treesV = new TreeView<>(root);
// Handle mouse clicks on the nodes
treesV.setOnMouseClicked(event -> {
// Get the selected item
TreeItem<String> item = treesV.getSelectionModel().getSelectedItem();
if (item != null) {
// Display the item text
System.out.println(item.getValue());
}
});
// Create a scene and add the TreeView
Scene scene = new Scene(treesV, 400, 300);
stage.setTitle("TreeView in JavaFX");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
要从命令提示符编译并执行保存的 Java 文件,请使用以下命令:
javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxTreeview.java java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxTreeview
输出
执行上述代码后,将生成以下输出。当我们点击项目时,其名称将显示在控制台上。