JTree操作API归纳

Swing JTree的使用及常用方法、常用功能实现 JTree的使用及常用方法、实现本地文件树、实现下拉列表树、节点的拖拽功能实现等 阅读详情

1.1 创建树组件
1.1.1 最简方式
:

    JTree tree  =   new  JTree();

    在显示时,树组件会带上JTree默认的节点。

1.1.2 指定树的节点后创建树:   

    DefaultMutableTreeNode root  =   new  DefaultMutableTreeNode( " 根节点 " );
    root.add( new  DefaultMutableTreeNode( " 子节点 " ));    
    JTree tree  =   new  JTree(root);


1.1.3 将树加入到面板中
    以下是将树加上滚动窗格后加入一个面板的示例程序。    

   JPanel panel = new  JPanel();
   panel.setLayout( new  GridLayout( 1 , 1 ));
   panel.add( new  JScrollPane(tree));

    
1.2 树节点相关
1.2.1 取得树的根节点

    DefaultTreeModel model  =  (DefaultTreeModel) tree.getModel();
    DefaultMutableTreeNode root  = (DefaultMutableTreeNode)model.getRoot();

 

1.2.2 更新树的根节点

    DefaultMutableTreeNode newRoot = ;
    DefaultTreeModel model  =  (DefaultTreeModel) tree.getModel();
    model.setRoot(newRoot);
    model.reload();  
    tree.updateUI();

 

1.2.3 从一个节点开始递归遍历其下的所有节点

private  String getNodeText(DefaultMutableTreeNode node){
   Category category = (Category)node.getUserObject();
   StringBuilder sb = new  StringBuilder(category.getText());
  
    if  (node.getChildCount()  >=   0 ) {
             for  (Enumeration <?>  e = node.children(); e.hasMoreElements(); ) {
             DefaultMutableTreeNode childNode  =  (DefaultMutableTreeNode)e.nextElement();
                sb.append(getNodeText(childNode));
            }
        }
  
    return  sb.toString();
}

 

1.2.4 在某节点下创建一个节点

    DefaultMutableTreeNode childNode  =   new  DefaultMutableTreeNode();
    childNode.setUserObject();
    parentNode.add(childNode);

1.2.5 节点改名   

    Category selectedCategory = (Category)clickedNode.getUserObject();
    selectedCategory.setName( " " );
    clickedNode.setUserObject(selectedCategory);

 

1.2.6 删除节点    

    DefaultTreeModel model  =  (DefaultTreeModel)tree.getModel();
    model.removeNodeFromParent(clickedNode);

    注意被删除的节点必须有父节点,若要删除根节点直接用null去替代原有根节点即可,

1.2.7 遍历用户选择的树节点    

    TreePath[] paths  =  tree.getSelectionPaths();
   
     for (TreePath selPath:paths){
        Object[] nodes  =  selPath.getPath();
  
        DefaultMutableTreeNode node  =  (DefaultMutableTreeNode) nodes[nodes.length  -   1 ];  
         //  对node进行处理
    }

 

1.3 树的事件处理
1.3.1 左键点击事件处理
    

   tree.addMouseListener( new  MouseAdapter() {
       public   void  mousePressed(MouseEvent e) {
         int  selRow  =  tree.getRowForLocation(e.getX(), e.getY()); //  返回节点所在的行,-1表示鼠标定位不在显示的单元边界内
        TreePath selPath  =  tree.getPathForLocation(e.getX(), e.getY()); //  返回指定节点的树路径
   
         boolean  condition  =   true ;
        condition  =  condition  &&  (selRow  !=   - 1 ); //  如果选中
         // condition = condition && (e.getButton() == 1); //  左键 e.getButton() == 1  右键  e.getButton() == 3
        condition  =  condition  &&  (e.getClickCount()  ==   1 ); //  单击
       
   
         //  如果是左键点击
         if  (condition  ==   true   &&  (e.getButton()  ==   1 )) {
          Object[] nodes  =  selPath.getPath();
         
          DefaultMutableTreeNode node  =  (DefaultMutableTreeNode) nodes[nodes.length  -   1 ];
          Category selectedCategory = (Category)node.getUserObject();
   
        }
      }
    });

 

1.3.2 在树节点上点击右键弹出右键菜单  

   tree.addMouseListener( new  MouseAdapter() {
       public   void  mousePressed(MouseEvent e) {
         int  selRow  =  tree.getRowForLocation(e.getX(), e.getY()); //  返回节点所在的行,-1表示鼠标定位不在显示的单元边界内
        TreePath selPath  =  tree.getPathForLocation(e.getX(), e.getY()); //  返回指定节点的树路径

         boolean  condition  =   true ;
        condition  =  condition  &&  (selRow  !=   - 1 ); //  如果选中
        condition  =  condition  &&  (e.getClickCount()  ==   1 ); //  单击
       
         //  如果是右键点击
         if (condition  ==   true   &&  (e.getButton()  ==   3 )){
         
          Object[] nodes  =  selPath.getPath();
          DefaultMutableTreeNode rightClickedNode  =  (DefaultMutableTreeNode) nodes[nodes.length  -   1 ];
          
          popupMenu.show(e.getComponent(), e.getX(), e.getY());
        }
      }
    });

 

1.4 树的渲染
1.4.1 树节点渲染器示例
  

  public   class  CategoryNodeRenderer  extends  DefaultTreeCellRenderer{
     private   static   final   long  serialVersionUID  =   8532405600839140757L ;
   
     private   static   final  ImageIcon categoryLeafIcon  =   new  ImageIcon(CategoryNodeRenderer. class .getResource( " /categoryLeaf.gif " ));
     private   static   final  ImageIcon openFolderIcon  =   new  ImageIcon(CategoryNodeRenderer. class .getResource( " /openFolder.gif " ));
     private   static   final  ImageIcon closedFolderIcon  =   new  ImageIcon(CategoryNodeRenderer. class .getResource( " /closedFolder.gif " ));
   
     public  Component getTreeCellRendererComponent(JTree tree,
                                              Object value,
                                               boolean  sel,
                                               boolean  expanded,
                                               boolean  leaf,
                                               int  row,
                                               boolean  hasFocus){
     
       super .getTreeCellRendererComponent(tree,  
                  value,
                  sel,  
                  expanded,  
                  leaf,  
                  row,  
                  hasFocus);  
     
       if (leaf){
        setIcon(categoryLeafIcon);
      }
       else   if (expanded){
        setIcon(openFolderIcon);
      }
       else {
        setIcon(closedFolderIcon);
      }
         
       return   this ;   
    }
  }

 

1.4.2 用树节点渲染器渲染一棵树  

  DefaultMutableTreeNode root  =   null ;
  JTree tree  =   new  JTree(root);
  tree.setCellRenderer( new  CategoryNodeRenderer());

Java Tree的几种开源组件 NULL 博文链接:https://jun1986.iteye.com/blog/1144751 立即下载

相关推荐

使用基于python的neurora进行表征相似性分析(RSA)

发现了一款用于表征分析的Python API,还是挺方便的,这里简单介绍一下进行表征相似性分析的使用方法。

zjh12312311的博客 2766

JTree操作API

JTree操作API归纳1.1 创建树组件1.1.1 最简方式:    JTree tree = new JTree();    在显示时,树组件会带上JTree默认的节点。1.1.2 指定树的节点后创建树:        DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");    root.add

2816

基于LSTM语义分析的企业风险预测系统

在数字化时代,企业面临着前所未有的挑战和机遇,而风险管理作为确保企业稳定发展的关键一环,其重要性日益凸显。为了及时、准确地监测和分析企业相关的风险,并预测可能带来的风险,本文介绍了一种基于长短期记忆(LSTM)语义分析的企业风险预测系统。该系统利用深度学习技术,通过将收集到的企业数据进行预处理和分析,结合LSTM模型对文本进行深度语义分析,从而实现对潜在风险的预测和评估。系统设计方面,该系统包括数据预处理、LSTM模型构建与训练、风险预测以及可视化展示等模块。

qiufangtaowvnyyidtf的博客 1392

jsTree 核心功能(core functionality) API

由于网站访问慢,所以拷贝了一份到此 https://viky-zhang.gitbooks.io/jstree-doc/content/api-core.html 1. jsTree 核心功能(core functionality) 1.1. $.jstree 包含所有 jstree 相关的函数和变量,包括用于创建、访问、维护实例的类和方法。 + ...

weixin_30735391的博客 1050

OpenCV实现物体尺寸的测量

物体尺寸测量的思路是找一个确定尺寸的物体作为参照物,根据已知的计算未知物体尺寸。如下图所示,绿色的板子尺寸为220*300(单位:毫米),通过程序计算白色纸片的长度。

qq_53545309的博客 9159

模组 RG500Q入网问题分析

- [ ] 不同于公网,在5G专网环境中, 通常使用很多非标准的网络配置,如PLMN/APN等。因此,5G模组在专网环境下通常要做一些专门的配置才能正常入网,本文分析一例在专网环境, 5G终端无法入网问题的定位过程。 - [ ] 具体涉及到以下模组操作: 恢复出厂、SA only、锁BAND、配置MBN等

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 935

JTree操作指南 主要API 方法

目前正好在学习JTree的使用问题,可是发现没有什么简单完善的JTree使用指南,自己学习后总结一个吧,不断更新。

249

倾斜摄影数据转换为3DTile格式的方法:基于CesiumLab GIS

通过使用CesiumLab GIS,倾斜摄影数据可以方便地转换为3DTile格式,并在CesiumJS等3D地理信息可视化工具中进行展示和分析。一旦成功导入3DTile数据,就可以在CesiumLab GIS中利用其强大的可视化和分析功能进行进一步的处理。转换完成后,可以将生成的3DTile数据导入到CesiumLab GIS中进行可视化和分析。启动CesiumLab GIS应用程序,并按照界面上的指导导入转换后的3DTile数据。脚本将开始执行,并将倾斜摄影数据转换为3DTile格式。

ObDjango的博客 1076

java tree组件_java中的tree组件

在开发系统的时候,尤其是前端需要展现一棵树的时候,经常需要构建一棵树来展现层级结构。java中swing自带的tree就能满足这些需求,各种遍历方式都有。import com.google.gson.Gson;import com.google.gson.GsonBuilder;import java.util.Arrays;import java.util.Enumeration;import ...

weixin_39725193的博客 907

YOLOv10 的损失函数解析

YOLOv10 在 YOLO 系列的演进中进一步优化了任务解耦与动态平衡策略,通过 ​多模态损失融合、自适应样本分配 和 ​轻量化设计,显著提升了检测精度与推理效率。

浩瀚之水的专栏 1378

ubuntu-emto-cpa 测试和使用(单核运行)

ubuntu-emto-cpa 测试和使用(单核运行)

qq_45834835的博客 1401

JTree的基本使用

import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; public class tree { JFrame jFrame=new JFrame(); DefaultMutableTreeNode root=new DefaultMutableTreeNode("中国"); DefaultMutableTreeNode r1=new DefaultMutableTreeNode("安徽"); DefaultMutable.

qq_57907966的博客 2705

Python 爬虫实战:简易爬取知乎回答内容

本文详细介绍了使用Python爬取知乎回答内容的实战方法。通过分析知乎异步加载API接口,讲解如何构建带反爬策略的爬虫代码,包括请求头设置、JSON数据解析和内容清洗等核心步骤。文章提供了完整可运行的代码示例,并针对多页爬取、数据保存和反爬升级给出优化建议。同时强调爬虫使用的合规性,帮助新手快速掌握动态网页爬取的核心技巧,实现从静态到动态网页爬虫的进阶。

2503_91057718的博客 2196

Java学习之JTree(树)

        树状结构是一种常用的信息表现形式,它可以直观地显示出一组信息的层次结构。Swing中的JTree类用来创建树。 1、创建树 下面给出一个直观的显示: 这种树的形式可以折叠和展开。 一个树有一个root节点         root = new DefaultMutableTreeNode("ROOT");//创建root节点         DefaultMutable...

3062

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JTree:树组件

如果要显示一个层次关系分明的一组数据,用树结构是最合适的。树如同 Windows 资源管理器的左半部,可通过单击文件夹展开或者收缩内容。Swing使用 JTree 类实现树,它的主要功能是把数据按照树状进行显示,其数据来源于其他对象。JTree 树中最基本的对象叫作节点,表示在给定层次结构中的数据项。树以垂直方式显示数据,每行显示一个节点。树中只有一个根节点,所有其他节点从这里引出。除根节点外,其他节点分为两类:一类是代子节点的分支节点,另一类是不带子节点的叶节点。 JTree 类的常用构造方法如下表所示.

QQ418579986的博客 1164

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java的树形控件(1)

很多应用程序都使用树形分层结构来显示数据视图,用户可以展开或者收缩试图中国单个子树。 JTree的构造函数如下: 1)JTree()          建立一个系统默认的树 2)JTree(Hashtable value)        利用Hashtable建立树,不显示根节点 3)JTree(Object[ ] value)        利用数组Object[ ]建立树,不显示跟节点

wintersense的专栏 3684

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jstree中文github文档

jstree是一个基于JQUERY的树形控件

GY기안시 7万+

JavaSwing之--JTree

详细介绍树形控件用到的JTree、DefaultMutableTreeNode、DefaultTreeModel、DefaultTreeCellRenderer类在树形控件创建及应用的用法。详细介绍了控件的四种监听器的添加方式及代码示例。

编程语言教学工作者的博客 987

P35 JTree树

P35 JTree树

李晋江的博客 1201

(一)如何使用JTree

英文文档地址: http://download.oracle.com/javase/tutorial/uiswing/components/tree.html 如何使用 Jtree (1)创建树 (2)对节点的选择做出响应 (3)自定义树的外观表现 (4)动态改变一棵树 (5)创建树的数据模型 (6)懒加载孩子 (7)如何写expansion linstener ...

永无止境 915

Java Swing JTree:树组件

1 JTree 树组件 Swing 使用 JTree 类实现树,它的主要功能是把数据按照树状进行显示,其数据来源于其他对象。JTree 树中最基本的对象叫作节点,表示在给定层次结构中的数据项。树以垂直方式显示数据,每行显示一个节点。树中只有一个根节点,所有其他节点从这里引出。除根节点外,其他节点分为两类:一类是代子节点的分支节点,另一类是不带子节点的叶节点。 1.1 JTree 类的常用构造方...

书香水墨 3367

JTree实现好友列表

      最近在写一个类似QQ的聊天小项目,遇到好友列表的设计,查了许多文章没有一篇写的比较完整的例子。所以自己将该Demo详细的过程写下来,供大家参考,有错误的欢迎指出。    一、概述        要使用JTree实现好友列表,就要调用JAVA本身自带的类库所提供的方法。但是JTree本身提供的方法设计出来的树是有默认的排版,没有美感,比较死板。代码和图如下:            ...

qq_41172982的博客 3109

JTree使用之调用数据库动态生成JTree

项目需求,从数据库动态生成JTree。 有两种方式:1,在树里边定义一个list&lt;Department&gt; child的字段 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.sc.po; import ja...

modabobo 712

JAVA中JTree的使用

<br />最近在看“企业快信”的源代码,这个项目的好友列表是用JTree实现的。<br />在理解了它的写法之后,就想把JTree控件的使用熟悉一下。于是自己写了个小练习,就是显示数据库中的用户名和图片路径在JTree中,并且还可以添加用户,同时在JTree中显示。<br />JTree中,有TreeCellRenderer接口,可以用类来实现这个接口。在这个接口相应的方法中,可以对树中的节点进行设置。如我就是在这个方法中设置节点的大小,以及判断节点,然后将节点用一定的样式显示。<br />然后,再可以写

卧龙居 1万+

JTree创建树

普通节点:包含子节点的节点,具有唯一父节点的节点 叶子结点:没有子节点的节点,因此叶子结点不可作为父节点 根节点:没有父节点的节点,根节点不可作为子节点 创建树 当一个节点具有子节点的两种状态 展开状态:当父节点处于展开状态时,其子节点是可见的 折叠状态:当父节点处于折叠状态时,其子节点都是不可见的 JTree常用构造器 JTree(TreeModel newModel):使用指定的数...

superzhangshuo的博客 712

JTree简介

同JTable类似,JTree也是一个负责的组件,其周围也有大量附属接口、类,如下图所示: 一.TreeNode(树节点) TreeNode是JTree的核心组成部分,通过TreeNode实现了Tree的基本结构。 swing提供了三个相关的接口和类。                                       接口总结20-1 T

novelly的专栏 1715
上一篇: 在JFileChooser对话框启用多项选择
下一篇: JFileChooser文件过滤的实现
gl7788521
博客等级 码龄17年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值