`
kanpiaoxue
  • 浏览: 1777286 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java中tree的应用示例:javax.swing.tree.DefaultMutableTreeNode

 
阅读更多

 

 

package org.kanpiaoxue.tree;

import org.apache.commons.collections.CollectionUtils;

import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

import java.util.List;
import java.util.Queue;

import javax.swing.tree.DefaultMutableTreeNode;

/**
 * tree的示例
 *
 * @ClassName: TreeExample
 * @author kanpiaoxue
 * @version 1.0
 * @CreateTime: 2021/02/03 14:55:12
 * @Description:
 */
public class TreeExample {
    private static final String PATH_SPLIT_STRING = "/";

    /**
     *
     * DefaultMutableTreeNode 树形结构的示例。
     *
     * @throws Exception
     * @author kanpiaoxue
     * @CreateTime: 2021/02/03 14:55:12
     * @Description:
     */
    public static void main(String[] args) {

        /**
         * 示例1:构建一颗树
         * 下面的代码构建了一棵树,有7个node。如url的图片。
         * https://app.diagrams.net/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&title=Untitled%20Diagram.drawio#R5ZhNj5swEIZ%2FDcdKfC0h1023zaE9VDnsqjcvnoAjwyBjAvTX1ywmBLlNqdQWRz2BX4%2BN%2FfidQeAEu7z9KEiZfUYK3PFd2jrBe8f3Pc%2BN1KVXukHZbjeDkApGddAkHNg30KKr1ZpRqGaBEpFLVs7FBIsCEjnTiBDYzMOOyOdPLUkKhnBICDfVZ0ZlNqixv5n0PbA0G5%2FsRduhJydjsN5JlRGKzZUUPDnBTiDK4S5vd8B7eCOXYdyHn%2FReFiagkEsGdDH%2F%2BlLvX%2FmJ7atz%2BfIlOz2%2FC4ZZzoTXesN6sbIbCQisCwr9JK4TPKKQGaZYEP4JsVSip8QTSNnpsyO1RCVlMue6d5gRqAF6WrmWKqxFAjeWOzqAiBTkjTj%2FwlcZEzAHKTo1TgAnkp3n6yDaIeklboKobjTH32D68GumPYyDbhZYqMvjPWIO18TsGZiJyZlzVSh6vE3GJBxK8rbvRtWqOTxSlUP1OLK2PwRN8wxCQnubp7l%2FPSAYM1%2BXPj%2FW7WYqJKGWsqsaMmp%2FnpiJ7N6cGS50puf%2B%2BGj%2BjTVDg3NilzVDd27NIFrbmq6B7Gg3sjBcGdnm7pPZX5jM0Zq5vP1vMMdrYvYNzK925f8lkW0pmbFBDCwjFltWMb0FXzuW53K0MJe9Vb%2BAIoMztcyatr3MPbP%2BpXYje%2FD%2FGjLVnH6LvPVd%2FVwKnr4D
         */
        DefaultMutableTreeNode a = new DefaultMutableTreeNode("a", true);
        DefaultMutableTreeNode b = new DefaultMutableTreeNode("b", true);
        DefaultMutableTreeNode c = new DefaultMutableTreeNode("c", true);
        DefaultMutableTreeNode d = new DefaultMutableTreeNode("d", true);
        DefaultMutableTreeNode e = new DefaultMutableTreeNode("e", true);
        DefaultMutableTreeNode f = new DefaultMutableTreeNode("f", true);
        DefaultMutableTreeNode g = new DefaultMutableTreeNode("g", true);

        a.add(b);
        a.add(c);

        b.add(d);
        b.add(e);

        c.add(f);

        d.add(g);

        System.out.println(String.format("%s", Lists.newArrayList(g.getPath())));
        System.out.println(String.format("%s", a.getDepth()));
        System.out.println(String.format("%s", a.getLevel()));

        /**
         * 示例2:从一个存储路径构建一棵树
         * 下面的代码构建了一棵树,有18个node。如path。
         */
        String path =
                "/Users/kanpiaoxue/workspaces/test-web/src/main/java/org/kanpiaoxue/test/web/service/store/impl";

        DefaultMutableTreeNode root = buildTreeFromPath(path);

        System.out.println(String.format("-->%s", root));
        System.out.println(String.format("-->%s", root.getFirstChild()));
        System.out.println(String.format("-->%s", root.getFirstChild().getChildAt(0)));
        System.out.println(String.format("-->%s", root.getFirstChild().getChildAt(0).getChildAt(0)));
        System.out.println(String.format("-->%s", root.getDepth()));
        System.out.println(String.format("-->%s", Lists.newArrayList(root.getLastLeaf().getPath())));
        System.out.println(String.format("-->%s", Lists.newArrayList(root.getLastLeaf().getPath()).size()));

    }

    /**
     *
     * 从路径构建一棵树
     *
     * @param path
     * @return
     * @author kanpiaoxue
     * @CreateTime: 2021/02/03 14:57:42
     * @Description:
     */
    private static DefaultMutableTreeNode buildTreeFromPath(String path) {
        Queue<String> treeData = Lists.newLinkedList();
        List<String> list = Splitter.on(PATH_SPLIT_STRING).trimResults().omitEmptyStrings().splitToList(path);
        if (CollectionUtils.isNotEmpty(list)) {
            treeData.addAll(list);
        }

        DefaultMutableTreeNode root = new DefaultMutableTreeNode(PATH_SPLIT_STRING, true);
        int level = 0;

        DefaultMutableTreeNode currentNode = null;
        while (!treeData.isEmpty()) {
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(treeData.poll(), true);
            if (level != 0) {
                currentNode.add(node);
            } else {
                root.add(node);
            }
            currentNode = node;
            level++;
        }
        return root;
    }
}

 

 

分享到:
评论

相关推荐

    JTree(节点带有checkbox)代码实例

    首先,我们需要导入必要的Java Swing库,包括`javax.swing.JTree`、`javax.swing.tree.DefaultTreeModel`、`javax.swing.tree.DefaultMutableTreeNode`等。`DefaultMutableTreeNode`用于构建树结构,`...

    Java GUI 三态导航树

    在Java Swing库中,`javax.swing.JTree`类用于创建树状视图,可以展示层次化的数据结构。树形控件通常由节点(TreeNode)组成,每个节点可以有子节点,形成树状结构。用户可以通过点击加号(+)或减号(-)来展开或...

    JAVA JTREE JTABLE实例代码

    在Java Swing库中,JTree和JTable是两个非常重要的组件,它们被广泛用于构建用户界面,特别是处理数据展示和交互。JTree用于显示层次结构的数据,而JTable则适用于二维表格形式的数据展现。 首先,我们来深入了解...

    java 创建树菜单

    import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; ``` 1. **创建树节点**: 在Java中,我们使用`DefaultMutableTreeNode`来创建树节点。这些节点可以包含其他节点,...

    编写一个能动态改变树结点的程序

    1. **`DefaultMutableTreeNode`**: 这是`javax.swing.tree`包中的一个类,用于构建树结构的数据节点。它实现了`MutableTreeNode`接口,允许添加、删除和移动子节点,从而支持了树结构的动态更新。 2. **`...

    swing复选框树

    在Java Swing库中,"复选框树"(Checkbox Tree)是一种可视化的组件,它将树形结构的数据与复选框结合,用户可以选择或取消选择树中的节点。这个组件非常适合于展示具有层次关系且需要多选操作的数据。下面我们将...

    java实现TreeView树型结构组件-源代码

    `DefaultMutableTreeNode`是`javax.swing.tree.MutableTreeNode`的实现,允许我们动态地修改树的结构。例如: ```java import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; // 创建根节点...

    Java目录树控件

    在Java中,Swing库提供了丰富的组件来创建GUI,其中JTree组件用于展示层次结构数据,如目录树。JTree不仅可以显示文件系统,还可以展示自定义的数据模型。首先,我们需要导入javax.swing.JTree和javax.swing.tree....

    关于树形菜单的实现 java

    在Java中,我们可以利用 Swing 或 JavaFX 这两个图形用户界面(GUI)库来创建树形菜单。这里我们将主要讨论Swing的实现,因为它在Java SE中广泛使用。 1. **JTree类**:Swing提供了一个名为`JTree`的组件,用于显示...

    JTree(节点带有checkbox)代码实例2

    在Java Swing库中,`JTree`是一个非常重要的组件,用于显示树形数据结构。它允许用户通过图形界面浏览和操作这些数据。在特定场景下,我们可能希望在`JTree`的节点上添加复选框(CheckBox),以便用户可以进行多选...

    jtree树应用

    import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class JTreeExample { public static void main(String[] args) { JFrame frame = new JFrame("JTree ...

    java swing拖放功能

    其中,拖放(Drag and Drop)功能是 Java Swing 中的一种重要功能,允许用户在应用程序中实现拖放操作。在本文中,我们将详细介绍 Java Swing 中的拖放功能,包括其实现原理、常用组件支持、事件处理机制等方面的...

    javaJTree编程(源代码)

    Java JTree是Java Swing库中的一个组件,用于创建和展示树形数据结构。在Java图形用户界面(GUI)开发中,JTree常被用来显示文件系统、组织结构或任何层次结构的数据。本示例程序“javaJTree编程(源代码)”提供了一...

    java 通讯簿

    import javax.swing.tree.DefaultMutableTreeNode; ``` #### 三、关键技术点 ##### 1. 文件操作 - **知识点**:Java中文件的读写、路径的处理。 - **应用场景**:在本程序中,用于读取存储联系人信息的文件。 #...

    所支持拖拽功能的Swing-JTree代码

    import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.data...

    java 1.6 自带demo

    在Java 1.6版本中,`tree` 示例展示了如何使用Java Swing库来创建具有树形视图的用户界面。树形视图是GUI中常见的元素,用于表示层次结构的数据,如文件系统目录结构。`javax.swing.tree`包提供了一系列类和接口,如...

    本体解析为树状结构的代码

    import javax.swing.tree.*; import java.awt.FlowLayout; import java.awt.GridLayout; import java.util.ArrayList; import com.hp.hpl.jena.rdf.model.*; import com.hp.hpl.jena.db.DBConnection; import ...

    java 动态树型菜单实现

    Java中实现动态树型菜单主要依赖于`javax.swing.JTree`组件。`JTree`是Swing库的一部分,用于创建和显示树结构。以下是一些关键步骤: 1. **创建TreeNode对象**:首先,我们需要定义数据结构,这通常通过继承`javax...

    dialg弹出框andTree

    import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class DialogWithTree { public static void main(String[] args) { // 创建树的数据结构 ...

Global site tag (gtag.js) - Google Analytics