首页 > 其他分享 >如何使用TreeView展示树状数据

如何使用TreeView展示树状数据

时间:2023-05-31 20:00:45浏览次数:32  
标签:展示 树状 add animalTreeView getChildren TreeItem new TreeView

如何使用TreeView展示树状数据

TreeView 是一个可用于显示树形数据结构的UI组件。它提供了一个可折叠、可展开的树状视图。

TreeView 是一个树状结构,其根节点的类型是 TreeItem 。

每个 TreeItem 又可以包含若干 TreeItem 。由此可组成一颗树形结构。

效果展示

image

示例代码

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;

public class TreeViewExample extends Application
{
    private TreeView<String> animalTreeView;

    private void onSelectItem(String item)
    {
        System.out.println(item);
    }

    private void buildAnimalTreeView()
    {
        animalTreeView = new TreeView<>();
        TreeItem<String> root = new TreeItem<>("动物");
        animalTreeView.setRoot(root);

        // 监听当前的选择
        animalTreeView.getSelectionModel().selectedItemProperty().addListener( 
            (observable, oldValue, newValue) -> onSelectItem(newValue.getValue()) 
        );

        TreeItem<String> birdTree = new TreeItem<>("鸟类");
        birdTree.getChildren().add(new TreeItem<>("麻雀"));
        birdTree.getChildren().add(new TreeItem<>("乌鸦"));
        birdTree.getChildren().add(new TreeItem<>("燕子"));
        root.getChildren().add(birdTree);

        TreeItem<String> mammalTree = new TreeItem<>("哺乳类");
        mammalTree.getChildren().add(new TreeItem<String>("猫"));
        mammalTree.getChildren().add(new TreeItem<String>("狗"));
        mammalTree.getChildren().add(new TreeItem<String>("兔子"));
        root.getChildren().add(mammalTree);
    }

    @Override
    public void start(Stage window) throws Exception
    {
        VBox vBox = new VBox();

        this.buildAnimalTreeView();
        vBox.getChildren().add(animalTreeView);

        Scene scene = new Scene(vBox, 400, 300);

        window.setScene(scene);
        window.setTitle(this.getClass().getSimpleName());
        window.show();
    }

    public static void main(String[] args)
    {
        launch(args);
    }
}

代码说明

  • buildAnimalTreeView 方法用于构建一个 TreeView ,内容是一个动物描述的示例
  • animalTreeView = new TreeView<>(); 用于创建一个新的 TreeView
  • new TreeItem<>("xxx"); 用于创建一个 TreeItem
  • animalTreeView.setRoot 设置根 TreeItem
  • tree.getChildren().add 可以为 TreeItem 添加子 TreeItem
  • animalTreeView.getSelectionModel().selectedItemProperty().addListener 添加了一个监听回调函数,当用户点击选择了某个 TreeItem 时触发

总结

使用TreeView展示树状数据的步骤如下:

  1. 创建一个 TreeView 对象
  2. 创建一个根节点 TreeItem ,并将其设置为 TreeView 的根节点
  3. 通过创建新的 TreeItem 对象构建树形结构。每个 TreeItem 对象可以包含子节点,以此组成完整的树形结构
  4. 可为 TreeView 添加事件监听器

标签:展示,树状,add,animalTreeView,getChildren,TreeItem,new,TreeView
From: https://www.cnblogs.com/javafx-howto/p/17447187.html

相关文章

  • POJ2352 stars(树状数组)
    题目:Stars #include<stdio.h>#include<string.h>constintN=32005;intC[N];intlevel[N];intLowbit(intx){returnx&(-x);}voidUpdate(intx){inti;for(i=x;i<=N;i+=Lowbit(i)){C[i]++;}}i......
  • “此间有书”微信小程序效果图展示
    由于上传时微信官方那边不给通过,说什么涉及到图书版权信息,明明我这个估计到这一点都没有展示图书内容(哭泣)小程序分为四个模块:广场、书城、发现、我的。广场模块就是每日推荐,有句子、音乐、电影推荐(纯属个人爱好页面)书城模块就是搜索书籍、查看书籍、然后收藏书籍、短评书籍......
  • Gym - 101174F[(DSU)+树状数组]
    题目链接:https://vjudge.net/problem/Gym-101174F 解题思路:其实这题不同启发式合并也可以做,对rank排个序,然后在做个dfs序,把rank值小的先插入树状数组中更新,然后对每个节点查询它的dfs序的区间和就好了。对于DSU来说就更加无脑了,本来就是"暴力",所以我们直接DSU再加一个树状数组维......
  • ajax实现省市联动动态展示省份
    1. 什么是省市联动?  30  - 在网页上,选择对应的省份之后,动态的关联出该省份对应的市。选择对应的市之后,动态的关联出该市对应的区。(首先要清楚需求)- 进行数据库表的设计t_area(区域表)id(PK-自增) code name pcode--------------------------------------------......
  • hdu 3874(树状数组+离线算法)
    解题思路:这道题和之前的题一样,查找[l,r]区间内不重复数字的和。可以利用离线算法,实际上离线算法为了解决在查找时出现的矛盾,因为每次询问的区间大小不同,如果单独处理的话可能会对之后的查询有影响,所以离线算法帮助我们把要查询的区间先按照右端点进行排序,因为在处理更靠右的区间时,......
  • hdu 4417(树状数组+离线算法)
    解题思路:这道题要求某区间内比h小的个数,其实这里可以类似于树状数组求逆序数那样。关键是如何转换成树状数组的模型,这才是本题的难点。我们首先分析,如果知道h在该区间的哪个位置,那么剩下的就很好做了。我们还可以发现,如果找到了当前的比h小的所有点(大于的点我们先忽略掉),那么我们就......
  • poj 1195(二维树状数组)
    解题思路:这是一道很裸的二维树状数组AC:#include<stdio.h>#include<string.h>#defineN1100intc[N][N],n,arr[N][N];intlowbit(intx){returnx&(-x);}voidupdate(intx,inty,intnum){inti,j;for(i=x;i<=n;i+=lowbit(i))for(j=y;......
  • hdu 5157(manacher+前缀和+树状数组)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5157解题思路:我们可以先用mancher算法对字符串进行处理,把以每个点为中心的回文串半径求出来,然后进行处理。加入对以p为中心的点,从p-r[i]+1~p都是回文串的开头,那么对于每个回文串(开头是j)只要记录结尾从1~j-1的回文串个数,我们可......
  • 聊一聊常见的数据展示方式:数据大屏
    跟朋友聊天,经常有朋友问我“皕杰在中国式复杂报表方面优势明显,远超竞争对手,为啥皕杰不重视数据大屏?看凡某的数据大屏多绚丽呀,很吸引用户的!”,今日有空闲就和大家聊一下数据大屏相关的内容。 随着显示屏技术的发展,数据大屏越来越多的被大家所熟悉。对搞数据的人而言,往往是不屑......
  • echarts堆叠柱状图上方展示两个数据项的总和
        //当月漏项统计排名getIndicatorCurve(data1){echarts.init(document.getElementById('lineOption5')).dispose()//销毁实例//找到容器letmyEcharts=echarts.init(document.getElementById('lineOption5'),......