Java Swing 树状组件JTree的使用方法(转)

树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识。展开 节点是一个非叶节点(由返回 false 的 TreeModel.isLeaf(node) 标识),当展开 其所有祖先时,该节点将显示其子节点。折叠 节点是隐藏它们的节点。隐藏 节点是位于折叠祖先下面的节点。所有可查看 节点的父节点都是可以展开的,但是可以显示它们,也可以不显示它们。显示 节点是可查看的并且位于可以看到它的显示区域。

构造方法摘要
JTree()           返回带有示例模型的 JTree
JTree(Hashtable<?,?> value)           返回从 Hashtable 创建的 JTree,它不显示根。
JTree(Object[] value)           返回 JTree,指定数组的每个元素作为不被显示的新根节点的子节点。
JTree(TreeModel newModel)           返回 JTree 的一个实例,它显示根节点 - 使用指定的数据模型创建树。
JTree(TreeNode root)           返回 JTree,指定的 TreeNode作为其根,它显示根节点。
JTree(TreeNode root,  boolean asksAllowsChildren)           返回 JTree,指定的 TreeNode 作为其根,它用指定的方式显示根节点,并确定节点是否为叶节点。
JTree(Vector<?> value)           返回 JTree,指定 Vector 的每个元素作为不被显示的新根节点的子节点。
public JTree(TreeNode root)
返回 JTree,指定的 TreeNode 作为其根,它显示根节点。默认情况下,树可以将叶节点定义为不带子节点的任何节点。
下面用构造方法public JTree(TreeNode root)创建实例

?

import javax.swing.JFrame;

import javax.swing.JTree;

import javax.swing.event.TreeSelectionEvent;

import javax.swing.event.TreeSelectionListener;

import javax.swing.tree.DefaultMutableTreeNode;

public class TreeDemo {

    public static void main(String[] args) {

        // 创建没有父节点和子节点、但允许有子节点的树节点,并使用指定的用户对象对它进行初始化。

        // public DefaultMutableTreeNode(Object userObject)

        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("软件部");

        node1.add(new DefaultMutableTreeNode(new User("小花")));

        node1.add(new DefaultMutableTreeNode(new User("小虎")));

        node1.add(new DefaultMutableTreeNode(new User("小龙")));

        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("销售部");

        node2.add(new DefaultMutableTreeNode(new User("小叶")));

        node2.add(new DefaultMutableTreeNode(new User("小雯")));

        node2.add(new DefaultMutableTreeNode(new User("小夏")));

        DefaultMutableTreeNode top = new DefaultMutableTreeNode("职员管理");

        top.add(new DefaultMutableTreeNode(new User("总经理")));

        top.add(node1);

        top.add(node2);

        final JTree tree = new JTree(top);

        JFrame f = new JFrame("JTreeDemo");

        f.add(tree);

        f.setSize(300, 300);

        f.setVisible(true);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 添加选择事件

        tree.addTreeSelectionListener(new TreeSelectionListener() {

            @Override

            public void valueChanged(TreeSelectionEvent e) {

                DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree

                        .getLastSelectedPathComponent();

                if (node == null)

                    return;

                Object object = node.getUserObject();

                if (node.isLeaf()) {

                    User user = (User) object;

                    System.out.println("你选择了:" + user.toString());

                }

            }

        });

    }

}

class User {

    private String name;

    public User(String n) {

        name = n;

    }

    // 重点在toString,节点的显示文本就是toString

    public String toString() {

        return name;

    }

}

http://www.cnblogs.com/taoweiji/archive/2013/02/08/2909214.html

时间: 2024-11-05 02:39:04

Java Swing 树状组件JTree的使用方法(转)的相关文章

[Java]Swing树状组件JTree

一 简单样式 TreeNodeDemo.java package com.sjf; import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; public class T

Java文件目录树状结构:控制台打印某个文件夹下的文件目录树状结构

1 package com.zhen.file; 2 3 import java.io.File; 4 5 /* 6 * 控制台打印某个文件夹下的文件目录树状结构 7 * 递归算法 8 */ 9 10 public class FileTree { 11 12 public static void main(String[] args) { 13 File file =new File("D:/Github/JavaTest"); 14 PrintFile(file, 0); 15 }

【Java Swing探索之路系列】之二:Java Swing布局面板组件

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 面板指的是容器,即中间容器类,可以将基本组件放置在其中,组成丰富多彩的用户界面. 一 JPanel 在JPanel的使用中,有一个双缓冲的概念,这个技术旨在改进频繁变化的组件显示效果.可以在JPanel初始化的时候进行定义如下所示: 举例 展示如何使用JPanel中间容器类. import javax.

【BZOJ3132】上帝造题的七分钟 树状数组

[BZOJ3132]上帝造题的七分钟 Description “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. 第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作. 第四分钟,彩虹喵说,要基于二叉树的数据结构,于是便有了数据范围. 第五分钟,和雪说,要有耐心,于是便有了时间限制. 第六分钟,吃钢琴男说,要省点事,于是便有了保证运算过程中

vijos p1512——SuperBrother打鼹鼠(树状数组)(复习)

背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大……).洞口都在一个大小为n(n<=1024)的正方形中.这个正方形在一个平面直角坐标系中,左下角为(0,0),右上角为(n-1,n-1).洞口所在的位置都是整点,就是横纵坐标都为整数的点.而SuperBrother也不时地会想知道某一个范围的鼹鼠总数.这就是你的任务

LA 4329(树状数组)

算法竞赛入门经典 p197 题目大意: 一条大街上住着n个乒乓球爱好者.常常比赛切磋技术.每一个人都有一个不同的技能值a[i].每场比赛须要3个人:两名选手,一名裁判.他们有个奇怪的约定,裁判必须住在两名选手之间,而裁判的能力值也必须在两名选手之间.问一共能组织多少种比赛. 分析:    如果a[1]到a[i-1]中小于a[i]的数有p[i].a[i+1]到a[n]中小于a[i]的数有s[i]个; 这样当i为裁判时可以组织的比赛数目为:p[i]*(n-i-s[i]) + (i-1-p[i])*s

HDU 1394 Minimum Inversion Number (树状数组求逆序对)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目让你求一个数组,这个数组可以不断把最前面的元素移到最后,让你求其中某个数组中的逆序对最小是多少. 一开始就求原来初始数组的逆序对,树状数组求或者归并方法求(可以看<挑战程序设计>P178),然后根据最前面的元素大小递推一下每次移到最后得到的逆序数,取最小值. 1 #include <iostream> 2 #include <cstdio> 3 #include

Necklace HDU - 3874 (线段树/树状数组 + 离线处理)

Necklace HDU - 3874 Mery has a beautiful necklace. The necklace is made up of N magic balls. Each ball has a beautiful value. The balls with the same beautiful value look the same, so if two or more balls have the same beautiful value, we just count

Java Swing编程之仿js树状折叠菜单

最近要完成一个需求:用swing做个树状菜单,含二级菜单,点击一级菜单展开二级菜单,且二级菜单数目超过预览视图会出现滚动条.由于swing研究的少,花了不少精力! 先看下测试效果图: 收起图: 展开图: 完整源码: 1 package com.xuwei.test2; 2 3 import java.awt.BorderLayout; 4 import java.awt.Color; 5 import java.awt.GridLayout; 6 import java.awt.event.Ac