Java GUI编程——基于javaFx的TreeView的实现
TreeView是最重要的控件之一,它在使用 JavaFX 的基于 GUI 的Java编程中以树状格式实现数据的分层视图。 “分层”是指一些项目作为其他项目的从属项目,例如,通常使用树来显示文件系统的内容,其中各个文件从属于它们所属的目录。 TreeView 是使用树数据结构的Java GUI 程序的简单概念实现。
一棵树用单个根节点表示,表示树的开始,在根节点下附加一个或多个子节点,子节点有两种类型
- 叶节点
- 分支节点
- 叶节点是HA已经没有孩子也被称为(终端节点),而分支节点的节点是节点,对于子树的形式根节点。从根到特定节点的一系列节点称为路径。
- TreeView 最有用的功能是当树的大小超过视图的尺寸时它会自动提供滚动条。
如何使用 JavaFX 类实现 TreeView:
1. 导入必要的库:
我们调用必要的库来激活 JavaFX 控件并收集所有资源以使用 TreeView,如下所示:
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;
2 .创建树视图:
首先,我们通过调用 TreeView 类的新实例来创建一个 TreeView 对象,如何为 TreeView 类设置对象的示例如下所示:
TreeView tV = new TreeView();
3.将 TreeView 附加到场景图:
我们的下一个任务是将 TreeView 添加到 JavaFx Scene Graph 中,使其可见,下面的代码片段用于强制执行此操作:
public void start(Stage primaryStage) {
TreeView tV = new TreeView();
VBox vb = new VBox(tV);
Scene s = new Scene(vb);
primaryStage.setScene(s);
primaryStage.show();
}
4. 将树项附加到 TreeView :
将由 JavaFx TreeView 显示的项目由 TreeItem Class(javafx.scene.control.TreeItem) 表示。
TreeItem rItem = new TreeItem(“Tutorials”);
TreeItem wItem = new TreeItem(“Web Tutorials”);
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(webItem);
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);
TreeView tV = new TreeView();
tV.setRoot(rItem);
5. 向 TreeView 添加子项:
在 TreeView 中,元素之间的父子关系以递归方式运行,即 TreeItem 可以将其他 TreeItem 实例作为子项,我们使用getChildren()方法从 JavaItem 中获取元素并使用add()方法将其添加到 TreeView如以下代码片段所示:
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”));
TreeItem rItem = new TreeItem(“Tutorials”);
rItem.getChildren().add(javaItem);
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();
}
}
输出 :
Note: The elements entered in the above image are only to show as an example, you can label the items in TreeView depending upon the context of the situation.