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

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

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

表1 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 对象和节点对象创建简单的树型界面。该实例代码如下:

package my;import java.awt.Component;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;public class JTreeDemo
{public static void main(String[] args){// TODO Auto-generated method stubJFrame frame=new JFrame("教师学历信息");frame.setSize(330,300);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(new JTreeDemo().createComponent());frame.pack();frame.setBounds(300,200,500,700);frame.setVisible(true);}private Component createComponent(){// TODO Auto-generated method stubJPanel panel=new JPanel();DefaultMutableTreeNode root=new DefaultMutableTreeNode("教师学历信息");String Teachers[][]=new String[3][];Teachers[0]=new String[] {"陈聪聪","刘鑫雨","朱佳瑜","高婉婷","孙金帅","邱行波","鹿昂"};Teachers[1]=new String[] {"何丽丽","吕胜男","杨国庆","余荣宵","陈玉冉","刘艳婷","郭久森","马锐浩"};Teachers[2]=new String[] {"金宝","周小伟","闫鑫宇","李晓壮","王传顺","李欢洋","程鼎"};String gradeNames[]= {"硕士学历","博士学历","博士后学历"};DefaultMutableTreeNode node=null;DefaultMutableTreeNode childNode=null;int length=0;for(int i=0;i<3;i++){length=Teachers[i].length;node=new DefaultMutableTreeNode(gradeNames[i]);for(int j=0;j<length;j++){childNode=new DefaultMutableTreeNode(Teachers[i][j]);node.add(childNode);}root.add(node);}JTree tree=new JTree(root);panel.add(tree);panel.setVisible(true);return panel;}}

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

教师学历信息运行效果

【Swing】JTree:树组件相关推荐

  1. 23、Java Swing JTree:树组件

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

  2. Java Swing JTree:树组件

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

  3. java swing 树_Java Swing JTree 树形

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.概念 官方JavaDocsApi:javax.swing.JTree JTree 树.将分层数据显示为树状轮廓的组件. 树由若干节点,通过层级关系组成 ...

  4. 树组件说明书java_java树组件

    package 树组件; import java.awt.Component; public class Example9_12 { public static void main(String ar ...

  5. Java程序设计——Swing UI 高级组件(三)

    目录 Timer:计时器 JFileChooser:文件选择器 JColorChooser:颜色选择器 BorderFactory:边框 JTable:表格 JOptionPane:标准对话框 JTr ...

  6. php easyui tree 结构,EasyUI Tree树组件无限循环的解决方法

    在学习jquery easyui的tree组件的时候,在url为链接地址的时,发现如果最后一个节点的state为closed时,未节点显示为文件夹,单击会重新加载动态(Url:链接地址)形成无限循环. ...

  7. HT for Web的HTML5树组件延迟加载技术实现

    HT for Web的HTML5树组件有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了浏览器的 ...

  8. ant vue 树形菜单横向显示_快速实现一个简单可复用可扩展的Vue树组件

    来源 | https://wintc.top/article/13大概因为平时工作项目的原因,写了很多次树形组件,越写越觉得可以写得更简单并且更具有复用性.扩展性.树组件的应用场景很多,比如一篇文章的 ...

  9. Element tree树组件 鼠标双击事件

    需求 双击 tree上的子节点,把节点文字显示在输入框中(这里简化一下,双击 tree 显示文字即可,省略 $emit 那一步) 注解:props 可以接收 defaultExpandAll(是否默认 ...

最新文章

  1. SAP CRM WebClient UI上以html格式显示note的问题讨论
  2. MVC之实体框架(数据持久化框架)EntityFrameWork(EF)
  3. Jquery的ajax提交成功后刷新页面
  4. Linked dylibs built for GC-only but object files built for retain/release for architecture x86_64
  5. VBA中的字符串处理
  6. 性能优越的轻量级日志收集工具,微软、亚马逊都在用!
  7. 2019-1、CentOS7+安装Tengine_2_3_2(Nginx 1_17_0)
  8. redis 系列19 客户端
  9. 别人家只会编段子,谷歌带大家找乐子 | 愚人节の真 · 大型线下踏春游戏
  10. 数字图像处理:图像直方图基础知识介绍
  11. 英特尔vPro博锐技术激活
  12. 离散 单射 满射 双射
  13. mysql索引类型normal,unique,full text的区别?
  14. 摄像机,光源和阴影 -----OGRE 3D 1.7 Beginner‘s Guide中文版 第四章
  15. python小白社区_python3+pycharm社区版小白安装步骤
  16. 为何我国这么大力推进5G发展?
  17. Linux系统中的火墙策略——firewalld、iptables
  18. 报童问题求解最大利润_提升Abaqus求解效率的七种武器
  19. 给谷歌安装es-head
  20. 在CV/NLP/DL领域中,有哪些修改一行代码或者几行代码提升性能的算法?

热门文章

  1. PLC实验:定时器/计数器功能实验
  2. python网易云收费_小白都能学会的Python爬虫网易云音乐
  3. 4G信号变卡的主要原因
  4. 关于道路标志牌的标记和数字标记
  5. Android8.0 WIFI ap Tethering 相关知识
  6. 约瑟夫出圈问题之幼儿园做游戏
  7. 2019一键清空朋友圈_新整理再见2019你好2020朋友圈励志说说
  8. intel 新一代集成显卡
  9. 元代家谱上的名字是以数字命名的?这里面蕴含了哪些历史特色?
  10. 2020 年最具潜力 44 个顶级开源项目,涵盖 11 类 AI 学习框架、平台(值得收藏)...