`
bubble
  • 浏览: 148077 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

JTree使用要点

阅读更多

引自:http://jeremyway.bokee.com/3802357.html
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);
         &nsp; }
       }
   }
 
   // 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,JTree使用方法

    ### 如何使用JTree:详解与实践 #### JTree简介 `JTree`是Java Swing中的一个组件,用于展示层次化的数据结构。它允许用户在应用程序中构建树形视图来表示目录结构、组织结构图等。`JTree`继承自`JComponent`类,...

    java组件之jtree使用

    ### Java组件之JTree使用详解 #### 一、引言 `JTree`是Java Swing中的一个重要组件,用于展示层次化的数据结构。它提供了一种直观的方式来表示具有层级关系的数据,例如文件系统的目录结构或者组织架构等。本文将...

    JTree用法及JTree使用经验总结及源码

    JTree用法及JTree使用经验总结(吐血推荐) 1、初始化 2、三个经常使用的取值函数 3、根据node得到path:4、根据Path展开到该节点 5、根据path设定该节点选定 6、选中节点的方法 7、滚动到可见位置 8、给JTree添加右键...

    jtree的详细使用说明

    ### JTree 的详细使用说明 #### 一、JTree 概述 `JTree` 是 Java Swing 中用于显示树状结构的数据组件。它继承自 `JComponent` 类,并且实现了 `Scrollable` 接口,这使得 `JTree` 能够在滚动面板 (`JScrollPane`)...

    (一)如何使用JTree

    这篇博文将探讨如何在Java应用程序中有效地使用JTree。 首先,理解JTree的基本概念至关重要。JTree是javax.swing.tree包中的一个类,它允许用户通过树状结构浏览数据。每个节点可以有子节点,形成一个可展开和折叠...

    java中Jtree的使用

    Jtree的使用例子 这是类似qq的节点例子 帮助我们是简单地编码

    java使用jtree动态实现二叉树

    在Java中,`JTree`通常与`DefaultMutableTreeNode`和`TreeModel`一起使用。`DefaultMutableTreeNode`是`TreeNode`的实现,允许添加、移除和改变子节点。`TreeModel`是树数据模型接口,用于管理树的结构和数据。 ```...

    高级Swing组件JTree应用

    1. 掌握JTree应用,树节点的操作; 2. 使用JTree展数,管理对象。

    JTree控件的使用

    例如,可以使用`HashTable`、`Object`数组、`TreeNode`对象或`Vector`来初始化树的子节点。`TreeNode`接口是树数据模型的基础,它定义了节点之间的关系。`DefaultTreeModel`是树模型的一个默认实现,当数据发生变化...

    jtree

    在Java的Swing库中,`JTree`组件是一个用于展示层次数据的控件,它以树状结构显示数据。`jtree`标题所指的可能是关于如何在`JTree`中添加复选框(checkboxes)的功能。这通常是为了让用户能够多选树中的节点,进行...

    JAVA JTREE JTABLE实例代码

    总之,JTree和JTable是Java GUI编程中不可或缺的工具,熟练掌握它们的使用能够极大地提升开发效率,提供用户友好的数据展示界面。通过实践和研究提供的实例代码,开发者可以深入理解这两个组件的工作原理,从而更好...

    JTree

    1. **模型(Model)**:`JTree` 使用 `DefaultTreeModel` 或自定义的 `TreeModel` 来存储和管理树的数据。模型负责处理节点的添加、删除和修改,并通知 `JTree` 进行相应的更新。 2. **节点(Node)**:在树中,每...

    jTree和jTable 双向联动

    实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。

    Java JTree+JTable应用

    本项目是关于如何在Java应用程序中结合使用这两种组件的一个示例,特别强调了如何将`JTree`的节点内容动态地显示到`JTable`中。 首先,我们来看`JTree`。`JTree`是用来展示树状数据结构的组件,如文件系统目录结构...

    JTree的例子,可以拖动节点

    在Java Swing库中,`JTree`是一个非常重要的组件,用于显示和操作树形数据结构。这个例子展示了如何实现一个可拖动节点的`JTree`,这在用户界面设计中是一个常见且实用的功能,特别是在需要展示层次结构信息时。`...

    JTree的Doc文档

    在Java编程中,理解和掌握`JTree`的使用方法对于创建具有用户友好界面的应用程序至关重要。`jenkov-prizetags-doc-3.4.0.zip`压缩包提供的JTree Doc文档是开发者学习和查阅`JTree`功能的重要参考资料。 **Javadoc...

    JTree的实现代码

    然而,这里的"JTree"特指一个使用纯JavaScript编写的树形控件。它提供了与Java JTree类似的功能,但适用于Web环境,无需服务器端Java支持。 2. **JavaScript基础**: JavaScript是一种客户端脚本语言,用于增强...

    Jtree

    在IT领域,JTree是一种广泛使用的Java Swing组件,它允许用户以树形结构来展示数据。这个组件在GUI(图形用户界面)应用中特别常见,因为它能清晰地组织层次化的信息,比如文件系统目录、数据库结构或者项目组织。...

    netbeans-Jtree

    在这个项目“netbeans-Jtree”中,开发者使用NetBeans 8.0 IDE创建了一个包含三级结构的树形视图。NetBeans是一款功能丰富的集成开发环境(IDE),特别适合于Java应用的开发,提供了代码编辑、调试、测试和部署等一...

    JTree组件资料

    2. **设置JTree**: 使用创建的`DefaultTreeModel`实例初始化`JTree`对象。例如: ```java DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); DefaultTreeModel model = new DefaultTreeModel...

Global site tag (gtag.js) - Google Analytics