Java Swing 如何使用JTree(3)

转载 2017年01月02日 21:05:32
JTree组件被用来以树的形式显示数据,一层套一层,看起来清晰明了,使用户很方便地就了解到各个节点之间的层次关系,可以很容易地找到相关的数据。

  例如 Windows 系统的文件管理器,它就是一个典型的树层次结构。


  JTree的构造函数

  ·JTree() 建立一棵默认的树。

  ·JTree(Hashtable data) 利用Hashtable建立树。

  ·JTree(Object[] data) 利用数组建立树。

  ·JTree(TreeModel model) 利用TreeModel建立树。

  ·JTree(TreeNode root) 建立以root为根的树。

  ·JTree(TreeNode root,Boolean children) 建立以 root 为根的树,并设定是否允许有子节点。

  ·JTree(Vector value) 利用Vector建立树。


  使用一个JTree可以简单地像下面这样表示:

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(300300);
        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;
    }
}

 

Java Swing 树状组件JTree的使用方法【图】

树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识。展开 节点是一个非叶节点(由返回 false 的 TreeMode...
  • zjhwqx
  • zjhwqx
  • 2017年06月07日 13:43
  • 205

java swing JTree 实现资源管理器 UIManager.setLookAndFeel 更改外观

java swing JTree 实现资源管理器 UIManager.setLookAndFeel 更改外观2009-04-03 09:09转自http://www.java-cn.com/bbs-j...

java学习脚印: JTree序列化(Swing组件运用敏捷版)

java学习脚印: JTree序列化(Swing组件运用敏捷版) 写在前面               JTree列属Swing中比较复杂一点的组件,相关知识点暂时没能整理出,现在给出一个JTree序...

疯狂JAVA讲义---第十二章:Swing编程(七)JTree树

树这东西给用户的感觉极为方便,但给程序员带来很大的麻烦,它是swing中最麻烦的控件之一。树要弄的好非常麻烦,图标的美化,层次的划分,各种事件的处理。。。对于初学者来说,就不要太讲究样式,下面举个粗糙...

Java Jtree渲染叶子实现可以添加swing组件

Java Jtree渲染叶子实现可以添加swing组件

[Java]Swing树状组件JTree

一 简单样式TreeNodeDemo.javapackage com.sjf;import javax.swing.JFrame; import javax.swing.JTree; import j...

Jtree的使用方法-swing 一共很多个例子--添加节点--先序遍历

1 package com.wanju.chat.test.tree; import java.awt.BorderLayout; import javax.swing.JFrame; impo...

【Swing入门教程】一步一步做Netbeans(4):JTree的使用及定制TreeCellRenderer

      下一步我们要做什么呢,其实我是想早点睡觉;我一直有个愿望,希望能在12点之前睡觉,每次都被我硬生生的拖到12点以后,我一直认为12点之前睡觉是浪费时间,会有一种负罪感。那都是学生时代养成的...

【swing】jtree的数据绑定,使用,美化,事件及ui的刷新

【前言】 这篇文章是接上一篇文章的。 【jtree】 jtree也是其中一个比较难明白的控件。 jtree也是数模分离的,需要自定义一个模型,然后再自定义显示方式---您也可以选择使用默认的显示方...
  • cdnight
  • cdnight
  • 2013年07月14日 17:47
  • 3245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Swing 如何使用JTree(3)
举报原因:
原因补充:

(最多只允许输入30个字)