如果要显示一个层次关系分明的一组数据,用树结构是最合适的。树如同 Windows 资源管理器的左半部,可通过单击文件夹展开或者收缩内容。

Swing 使用 JTree 类实现树,它的主要功能是把数据按照树状进行显示,其数据来源于其他对象。JTree 树中最基本的对象叫作节点,表示在给定层次结构中的数据项。树以垂直方式显示数据,每行显示一个节点。树中只有一个根节点,所有其他节点从这里引出。除根节点外,其他节点分为两类:一类是代子节点的分支节点,另一类是不带子节点的叶节点。

JTree 类的常用构造方法如下表所示。

构造方法 说明
JTree() 返回带有示例模型的 JTree
JTree(Object[] value) 返回 JTree,指定数组的每个元素作为不被显示的新根节点的子节点
JTree(TreeNode root) 返回 JTree,使用指定的 root 作为其根节点
JTree(TreeNode root,boolean aslcsAllowsChildren) 返回 JTree,使用指定的 root 作为其根节点,asksAllowsChildren 用 于确定节点是否为叶节点

树节点由 javax.swing.tree 包中的接口 TreeNode 定义,该接口被 DefaultMutableTreeNode 类实现。

为了创建一个树,使用 DefaultMutableTreeNode 类为树创建节点,它的两个常用的构造方法如下。

  1. DefaultMutableTreeNode(Object userObject):创建没有父节点和子节点,但允许有子节点的树节点,并使用指定的用户对象对它进行初始化。
  2. DefaultMutableTreeNode(Object userObject,boolean allowsChildren):创建没有父节点和子节点的树节点,使用指定的用户对象对它进行初始化,仅在指定时才允许有子节点。

例 1

节点是树结构中最主要的元素,因此对节点操作是树结构最重要的操作。下面这个实例将介绍如何使用树 JTree 对象和节点对象创建简单的树型界面。该实例代码如下:

  1. package ch18;
  2. import javax.swing.JFrame;
  3. import javax.swing.JPanel;
  4. import javax.swing.JTree;
  5. import javax.swing.tree.DefaultMutableTreeNode;
  6. public class JTreeDemo
  7. {
  8. public static void main(String[] agrs)
  9. {
  10. JFrame frame=new JFrame("教师学历信息");
  11. frame.setSize(330,300);
  12. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13. frame.getContentPane().add(new JTreeDemo().createComponent());
  14. frame.pack();
  15. frame.setVisible(true);
  16. }
  17. private JPanel createComponent()
  18. {
  19. JPanel panel=new JPanel();
  20. DefaultMutableTreeNode root=new DefaultMutableTreeNode("教师学历信息");
  21. String Teachers[][]=new String[3][];
  22. Teachers[0]=new String[]{"王鹏","李曼","韩小国","穆保龄","尚凌云","范超峰"};
  23. Teachers[1]=new String[]{"胡会强","张春辉","宋芳","阳芳","朱山根","张茜","宋媛媛"};
  24. Teachers[2]=new String[]{"刘丹","张小芳","刘华亮","聂来","吴琼"};
  25. String gradeNames[]={"硕士学历","博士学历","博士后学历"};
  26. DefaultMutableTreeNode node=null;
  27. DefaultMutableTreeNode childNode=null;
  28. int length=0;
  29. for(int i=0;i<3;i++)
  30. {
  31. length=Teachers[i].length;
  32. node=new DefaultMutableTreeNode(gradeNames[i]);
  33. for (int j=0;j<length;j++)
  34. {
  35. childNode=new DefaultMutableTreeNode(Teachers[i][j]);
  36. node.add(childNode);
  37. }
  38. root.add(node);
  39. }
  40. JTree tree=new JTree(root);
  41. panel.add(tree);
  42. panel.setVisible(true);
  43. return panel;
  44. }
  45. }

在该实例中,创建树型界面的具体工作是由 createComponent() 私有方法完成的。在该方法中,首先创建一个根节点 root,接着定义两个数组来存放节点中的文本信息,然后通过嵌套 for 循环语句来创建除根节点外的所有节点并添加到对应的父节点上。最后把这些父节点添加到根节点中,该实例的运行效果如图 1 所示。

图1 教师学历信息运行效果

Java Swing JTree:树组件相关推荐

  1. java swing 遍历,关于java swing 无限级树的遍历问题

    关于java swing 无限级树的遍历问题 更多相关问题 患者,女,20岁.每遇生气后即咳逆阵作,口苦咽干,胸胁胀痛,咳时面赤,舌红苔薄黄,脉弦数.其证候是A. 患者,男,60岁.有长期饮酒史.现症 ...

  2. 23、Java Swing JTree:树组件

    如果要显示一个层次关系分明的一组数据,用树结构是最合适的.树如同 Windows 资源管理器的左半部,可通过单击文件夹展开或者收缩内容. Swing 使用 JTree 类实现树,它的主要功能是把数据按 ...

  3. 【Swing】JTree:树组件

    如果要显示一个层次关系分明的一组数据,用树结构是最合适的.树如同 Windows 资源管理器的左半部,可通过单击文件夹展开或者收缩内容. Swing 使用 JTree 类实现树,它的主要功能是把数据按 ...

  4. java动态添加组件_有关Java Swing动态增加组件

    展开全部 效果图 参考代码import java.awt.*; import java.awt.event.*; import javax.swing.*; //本类继承自JFrame 实现了 Act ...

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

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 面 ...

  6. java容器doc_java容器组件

    [解析] java.awt包提供了基本的 java程序的GUI设计工具.主要包括下述三个概念:组件―Component;容器―Container;布局管理器―LayoutManage.所以选项A是正确 ...

  7. 基于Java Swing界面编程教学

    基于Java Swing界面编程 Swing是Java基础类的一部分,是一个为Java设计的GUI工具包. Swing包含了诸多图形用户界面(GUI)器件,提供了许多比awt更好的屏幕显示元素. 本教 ...

  8. java jbutton边框颜色_在Java Swing中更改JButton的边框颜色,以保留插图

    我想更改Java Swing中JButton组件的边框颜色. 我尝试了以下方法: package com.example.test; import java.awt.Color; import jav ...

  9. Java Swing窗体编写——窗口创建思想

    目录 Java Swing 1.常见组件的介绍 1.1.相关内容 1.2.创建思想 2.总结 Java Swing 1.常见组件的介绍 JFrame.JPanel.JLabel.JTextArea.J ...

最新文章

  1. 自动生成小学四则运算题目的程序.心得体会
  2. 特斯拉再出车祸,两死一伤,这次是Model S
  3. IOC操作Bean管理注解方式(创建对象)
  4. Java实现简单的在聊天面板中显示emoji
  5. 基于三维地图的智慧园区可视化解决方案,智慧园区导航地图怎么制作?
  6. 三菱FX5U系列PLC使用MODBUS协议与仪表通信的简单说明
  7. 开发者的多媒体梦工厂: AV Pipeline Kit究竟是什么?
  8. java 设置模式_Java设计模式百例 - 调停者模式
  9. Android手电筒开发
  10. 计算机为何要用三级储存体系,计算机三级存储体系(1).ppt
  11. TikZ绘制多样的花括号
  12. Compute Shader次世代优化方案
  13. AI智能营业厅视频监控解决方案
  14. 富文本编辑vue插件vue-quill-editor
  15. Apache Shiro Java 反序列化漏洞分析
  16. 【一步步学OpenGL 31】 -《PN(Point-Normal)三角形曲面细分》
  17. TI AoA Master/PC 数据发送、接收流程梳理
  18. 一家优秀的云服务提供商,需要具备哪些条件
  19. php商城毕业设计ppt,一直想用PHP写个商城。,毕业论文设计,答辩ppt,开题报告,外文翻译,苹果,硕士研究生,iphone...
  20. 多项式求值的秦九韶算法

热门文章

  1. java中的finalize
  2. python如何保存excel文件
  3. ChatGPT微信小程序搭建总结
  4. html 中精灵图使用
  5. PHP的ES入门(三)—— 数据查询
  6. C语言技巧:有if时使用likely和unlikely让代码运行更快
  7. Drools LHS与RHS常见语法
  8. 吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【上】
  9. excel切片器_Excel折线图这样做,老板看了要崩溃
  10. hive3编译 on tez+tez-ui配置和遇到的兼容问题与踩坑记录