private JTree jtNetDevice;//数组件申明
private JScrollPane jspTree;//滚动面板申明

1、初始化 
    DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("root");
    jtNetDevice = new JTree(rootNode);
    jtNetDevice.setAutoscrolls(true);
    getTreeSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);//设置单选模式
    jspTree = new JScrollPane();
    jspTree.getViewport().add(jtNetDevice, null);

2、三个经常使用的取值函数 
  private DefaultTreeModel getTreeModel(){
    return (DefaultTreeModel)jtNetDevice.getModel();
  }

private DefaultMutableTreeNode getRootNode(){
    return (DefaultMutableTreeNode)getTreeModel().getRoot();
  }
  
  private TreeSelectionModel getTreeSelectionModel(){
    return jtNetDevice.getSelectionModel();
  }

3、根据node得到path:
  TreePath visiblePath = new TreePath(getTreeModel().getPathToRoot(node));

4、根据Path展开到该节点
  jtNetDevice.makeVisible(visiblePath);

5、根据path设定该节点选定
  jtNetDevice.setSelectionPath(visiblePath);

6、选中节点的方法
  首先,根据节点得到树路径,其中chosen为需要选中的节点
  TreePath visiblePath = new TreePath( ( (DefaultTreeModel) jtNetDevice.getModel()).
                                        getPathToRoot(chosen));
  然后根据Path选中该节点
  jtNetDevice.setSelectionPath(visiblePath);

7、滚动到可见位置 
  jtNetDevice.scrollPathToVisible(visiblePath);

8、给JTree添加右键弹出菜单
  void jtNetDevice_mouseReleased(MouseEvent e) {
    if (e.isPopupTrigger()) {
      jPopupMenu1.show(e.getComponent(), e.getX(), e.getY());//弹出右键菜单
    }
  }

9、关于JTree的展开
   // If expand is true, expands all nodes in the tree.
   // Otherwise, collapses all nodes in the tree.
   public void expandAll(JTree tree, boolean expand) {
       TreeNode root = (TreeNode)tree.getModel().getRoot();
   
       // Traverse tree from root
       expandAll(tree, new TreePath(root), expand);
   }
   private void expandAll(JTree tree, TreePath parent, boolean expand) {
       // Traverse children
       TreeNode node = (TreeNode)parent.getLastPathComponent();
       if (node.getChildCount() >= 0) {
           for (Enumeration e=node.children(); e.hasMoreElements(); ) {
               TreeNode n = (TreeNode)e.nextElement();
               TreePath path = parent.pathByAddingChild(n);
               expandAll(tree, path, expand);
           }
       }
   
       // Expansion or collapse must be done bottom-up
       if (expand) {
           tree.expandPath(parent);
       } else {
           tree.collapsePath(parent);
       }
   }

10、如何遍历JTree 
   // 创建树
   JTree tree = new JTree();
   
   // 添加树节点......
   
   // 遍历所有节点
   visitAllNodes(tree);
   
   // 仅遍历展开的节点
   visitAllExpandedNodes(tree);
   
   // Traverse all nodes in tree
   public void visitAllNodes(JTree tree) {
       TreeNode root = (TreeNode)tree.getModel().getRoot();
       visitAllNodes(root);
   }
   public void visitAllNodes(TreeNode node) {
       // node is visited exactly once
       process(node);
   
       if (node.getChildCount() >= 0) {
           for (Enumeration e=node.children(); e.hasMoreElements(); ) {
               TreeNode n = (TreeNode)e.nextElement();
               visitAllNodes(n);
           }
       }
   }
   
   // Traverse all expanded nodes in tree
   public void visitAllExpandedNodes(JTree tree) {
       TreeNode root = (TreeNode)tree.getModel().getRoot();
       visitAllExpandedNodes(tree, new TreePath(root));
   }
   public void visitAllExpandedNodes(JTree tree, TreePath parent) {
       // Return if node is not expanded
       if (!tree.isVisible(parent)) {
           return;
       }
   
       // node is visible and is visited exactly once
       TreeNode node = (TreeNode)parent.getLastPathComponent();
       process(node);
   
       // Visit all children
       if (node.getChildCount() >= 0) {
           for (Enumeration e=node.children(); e.hasMoreElements(); ) {
               TreeNode n = (TreeNode)e.nextElement();
               TreePath path = parent.pathByAddingChild(n);
               visitAllExpandedNodes(tree, path);
           }
       }
   }

JTree常用方法的更多相关文章

  1. JTree 常用方法

    package com.swing.demo; import java.awt.Component; import java.awt.event.MouseAdapter; import java.a ...

  2. Java中的常用方法

    Java中的常用方法 第一章 字符串 1.获取字符串的长度:length() 2.判断字符串的前缀或后缀与已知字符串是否相同    前缀 startsWith(String s).后缀 endsWit ...

  3. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  4. Jquery元素选取、常用方法

    一:常用的选择器:(李昌辉) 基本选择器 $("#myDiv") //匹配唯一的具有此id值的元素 $("div") //匹配指定名称的所有元素 $(" ...

  5. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  6. C# Webbrowser 常用方法及多线程调用

    设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...

  7. list,tuple,dict,set常用方法

    Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...

  8. JTree实现好友列表

    最近学习了一下JTree的使用方法: 先来看一下树的实例: 构建一个树, DefaultMutableTreeNode root = new DefaultMutableTreeNode(" ...

  9. 记录yii2-imagine几个常用方法

    记录yii2-imagine几个常用方法: //压缩 Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)->save(Yii::g ...

随机推荐

  1. java截取字符串函数

    substring public String substring(int beginIndex)返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

  2. CSS的Class以及ID选择器

    9.CSS的Class以及ID选择器 id和class的不同指出在于一个页面同一个ID只能只有一次,而class可以无限制使用. 同样,你可以在html选择器后面使用一个选择器来指定特殊HTML元素, ...

  3. nginx location 配置详解 【转载,整理】

    http://www.nginx.cn/115.html NGINX location 配置参考:http://www.cnblogs.com/zlingh/p/6288994.html https: ...

  4. Spring+Mybatis整合过程中找不到.properties文件

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' ...

  5. 如何改变git的默认路径

    1.win10下git默认启动路径是用户的根目录,东西太多太乱了. 2.修改很容易,右键单击桌面的快捷方式,选择“属性”. 3.删除“目录”中的 --cd-to-home 选项,再将“起始位置&quo ...

  6. Atitit 项目源码的架构,框架,配置与环境说明模板 规范 标准化

    Atitit 项目源码的架构,框架,配置与环境说明模板  规范 标准化 版本1.0 作者 艾龙 attilax 1. 概述:核心业务: 1 1.1. 功能文档路径 /palmWin/src/docum ...

  7. css3实现画对号动画

    目标:实现对号动画,慢慢画出来的感觉: 原理:外层div的背景是一个对号图片,用一个div做遮罩,让遮罩div层从左到右做运动一次即可实现动画,需要注意的是遮罩div的初始位置应该在外层div的外面: ...

  8. JAVA中INSTANCEOF关键字的用法总结

    https://www.cnblogs.com/jay36/p/7519145.html https://www.cnblogs.com/zjxynq/p/5882756.html https://b ...

  9. # file Python-3.4.7.tar.xz Python-3.4.7.tar.xz: XZ compressed data

    # file Python-3.4.7.tar.xz Python-3.4.7.tar.xz: XZ compressed data # xz -d Python-3.4.7.tar.xz # ls ...

  10. Lua中的模块与module函数详解

    很快就要开始介绍Lua里的“面向对象”了,在此之前,我们先来了解一下Lua的模块. 1.编写一个简单的模块 Lua的模块是什么东西呢?通常我们可以理解为是一个table,这个table里有一些变量.一 ...