广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州如何创建JavaFX树视图?_北大青鸟IT学校

作者:邓华发布时间:2021-05-20分类:Java技术浏览:699


导读:如何创建JavaFX树视图?相信学过Java的同学都遇到过这个问题,那么答案是什么呢?接下来一起来看看惠州北大青鸟老师是怎么回答的。

如何创建JavaFX树视图?相信学过Java的同学都遇到过这个问题,那么答案是什么呢?接下来一起来看看惠州北大青鸟老师是怎么回答的。

当创建树视图时,我们通常从构建根的TreeItem对象开始。 然后我们将根添加到树视图,并创建其他树项目对象并将它们添加到根。

我们可以通过setGraphic方法或使用它的构造函数来创建一个图形图标到树项目。 图标的建议大小为16x16。

对根项目调用的setExpanded方法定义树视图项目的初始外观。

以下代码从本地文件系统创建动态树。

import java.io.File;

import javafx.application.Application;

import javafx.collections.FXCollections; 

import javafx.collections.ObservableList; 

import javafx.scene.Group; import javafx.scene.Scene; 

import javafx.scene.control.TreeItem; 

import javafx.scene.control.TreeView; 

import javafx.scene.layout.VBox; 

import javafx.stage.Stage; 

public class Main extends Application {

   public static void main(String[] args) {

     launch(args);

   }

   private TreeItem<File> createNode(final File f) {

     return new TreeItem<File>(f) {

       private boolean isLeaf;

       private boolean isFirstTimeChildren = true;

       private boolean isFirstTimeLeaf = true;

       @Override

       public ObservableList<TreeItem<File>> getChildren() {

         if (isFirstTimeChildren) {

           isFirstTimeChildren = false;

           super.getChildren().setAll(buildChildren(this));

         }

         return super.getChildren();

       }

       @Override

       public boolean isLeaf() {

         if (isFirstTimeLeaf) {

           isFirstTimeLeaf = false;

           File f = (File) getValue();

           isLeaf = f.isFile();

         }

         return isLeaf;

       }

       private ObservableList<TreeItem<File>> buildChildren(

           TreeItem<File> TreeItem) {

         File f = TreeItem.getValue();

         if (f == null) {

           return FXCollections.emptyObservableList();

         }

         if (f.isFile()) {

           return FXCollections.emptyObservableList();

         }

         File[] files = f.listFiles();

         if (files != null) {

           ObservableList<TreeItem<File>> children = FXCollections

               .observableArrayList();

           for (File childFile : files) {

             children.add(createNode(childFile));

           }

           return children;

         }

         return FXCollections.emptyObservableList();

       }

     };

   }

   @Override   public void start(Stage stage) {

     Scene scene = new Scene(new Group(), 300, 300);

     VBox vbox = new VBox();

     TreeItem<File> root = createNode(new File("c:/"));

     TreeView treeView = new TreeView<File>(root);

     vbox.getChildren().add(treeView);

     ((Group) scene.getRoot()).getChildren().add(vbox);

     stage.setScene(scene);

     stage.show();

   }

 }

上面的代码生成以下结果。

JavaFX树视图2.png

点击咨询直接了解更多相关资料,我在惠州北大青鸟新方舟等你。

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学 校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表