📜  Java GUI编程——基于javaFx的TreeView的实现

📅  最后修改于: 2022-05-13 01:55:15.042000             🧑  作者: Mango

Java GUI编程——基于javaFx的TreeView的实现

TreeView是最重要的控件之一,它在使用 JavaFX 的基于 GUI 的Java编程中以树状格式实现数据的分层视图。 “分层”是指一些项目作为其他项目的从属项目,例如,通常使用树来显示文件系统的内容,其中各个文件从属于它们所属的目录。 TreeView 是使用树数据结构的Java GUI 程序的简单概念实现。

一棵树用单个根节点表示,表示树的开始,在根节点下附加一个或多个子节点,子节点有两种类型

  • 叶节点
  • 分支节点
  • 叶节点是HA已经没有孩子也被称为(终端节点),而分支节点的节点是节点,对于子树的形式根节点。从根到特定节点的一系列节点称为路径。
  • TreeView 最有用的功能是当树的大小超过视图的尺寸时它会自动提供滚动条。

如何使用 JavaFX 类实现 TreeView:

1. 导入必要的库:

我们调用必要的库来激活 JavaFX 控件并收集所有资源以使用 TreeView,如下所示:



2 .创建树视图:

首先,我们通过调用 TreeView 类的新实例来创建一个 TreeView 对象,如何为 TreeView 类设置对象的示例如下所示:



TreeView tV = new TreeView();  

3.将 TreeView 附加到场景图:

我们的下一个任务是将 TreeView 添加到 JavaFx Scene Graph 中,使其可见,下面的代码片段用于强制执行此操作:

4. 将树项附加到 TreeView :

将由 JavaFx TreeView 显示的项目由 TreeItem Class(javafx.scene.control.TreeItem) 表示。

5. 向 TreeView 添加子项:

在 TreeView 中,元素之间的父子关系以递归方式运行,即 TreeItem 可以将其他 TreeItem 实例作为子项,我们使用getChildren()方法从 JavaItem 中获取元素并使用add()方法其添加到 TreeView如以下代码片段所示:

6. 隐藏 TreeView 的 RootItem :

最后也是最重要的一步是隐藏根项,即 JavaFx TreeView 的根节点。我们通过调用 setShowRoot() 方法来实现,该方法使用布尔参数 false 进行初始化。

tV.setShowRoot(false);
Java
// Java Program to implement javaFx based TreeView
 
// Importing all necessary libraries
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
 
// Main class
// This class is extending Application class
public class GFG extends Application {
 
    // Main driver method
    public static void main(String[] args) { launch(args); }
 
    // @Override
    public void start(Stage primaryStage)
    {
 
        // Initializing variable to TreeItem element
        // All arguments are custom entries
        TreeItem rItem = new TreeItem("Tutorials");
 
        // Initializing variable for TreeItem variable
        TreeItem wItem = new TreeItem("Web Tutorials");
 
        // Adding labels for elements to TreeItem
        // Custom entries
        wItem.getChildren().add(
            new TreeItem("HTML  Tutorial"));
        wItem.getChildren().add(
            new TreeItem("HTML5 Tutorial"));
        wItem.getChildren().add(
            new TreeItem("CSS Tutorial"));
        wItem.getChildren().add(
            new TreeItem("SVG Tutorial"));
        rItem.getChildren().add(wItem);
 
        // Initializing new TreeItem
        TreeItem javaItem = new TreeItem("Java Tutorials");
        javaItem.getChildren().add(
            new TreeItem("Java Language"));
        javaItem.getChildren().add(
            new TreeItem("Java Collections"));
        javaItem.getChildren().add(
            new TreeItem("Java Concurrency"));
        rootItem.getChildren().add(javaItem);
 
        // Creating an object of TreeView class
        TreeView tV = new TreeView();
 
        tV.setRoot(rootItem);
 
        tV.setShowRoot(false);
 
        // Creating an object of VBox class
        VBox vb = new VBox(tV);
 
        // Creating an object of Scene class
        Scene s = new Scene(vb);
 
        // Now, setting the scene for primaryStage
        primaryStage.setScene(s);
 
        // Finally, display all the elements
        // using show() method
        primaryStage.show();
    }
}


输出 :