package tree;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image; import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel; public class treenode extends JFrame implements TreeSelectionListener{ JLabel jl;
public treenode()
{
super("树形结构"); //创建根节点和子节点
DefaultMutableTreeNode root=new DefaultMutableTreeNode("文本编辑器"); DefaultMutableTreeNode node1=new DefaultMutableTreeNode("文件");
DefaultMutableTreeNode node2=new DefaultMutableTreeNode("编辑"); //利用根节点创建treemodel
DefaultTreeModel treemodel=new DefaultTreeModel(root);
//插入子节点
treemodel.insertNodeInto(node1, root, root.getChildCount());
treemodel.insertNodeInto(node2, root, root.getChildCount()); //创建node1的子节点并插入
DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode("打开");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount()); leafnode=new DefaultMutableTreeNode("保存");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount()); leafnode=new DefaultMutableTreeNode("另存为");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount()); leafnode=new DefaultMutableTreeNode("关闭");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount()); //创建node2的子节点并插入
leafnode=new DefaultMutableTreeNode("剪切");
treemodel.insertNodeInto(leafnode, node2, node2.getChildCount()); leafnode=new DefaultMutableTreeNode("复制");
treemodel.insertNodeInto(leafnode, node2, node2.getChildCount()); leafnode=new DefaultMutableTreeNode("粘贴");
treemodel.insertNodeInto(leafnode, node2, node2.getChildCount()); //创建树对象
JTree tree =new JTree(treemodel); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addTreeSelectionListener(this);
tree.setRowHeight(20); //创建节点绘制对象
DefaultTreeCellRenderer cell=(DefaultTreeCellRenderer)tree.getCellRenderer(); //设置字体
cell.setFont(new Font("Serif",Font.PLAIN,14));
cell.setBackgroundNonSelectionColor(Color.white);
cell.setBackgroundSelectionColor(Color.LIGHT_GRAY);
cell.setForeground(Color.red); cell.setIcon(new ImageIcon("/image/folder.jpg")); //设置选中和不选中时文字的变化颜色
cell.setTextNonSelectionColor(Color.black);
cell.setTextNonSelectionColor(Color.black); this.add(new JScrollPane(tree)); jl=new JLabel("你当前选择的节点为:",JLabel.CENTER);
jl.setFont(new Font("Serif",Font.PLAIN,14));
this.add(jl,BorderLayout.SOUTH);
this.setSize(400, 400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) {
// TODO Auto-generated method stub
treenode t=new treenode();
} @Override
public void valueChanged(TreeSelectionEvent e) {
// TODO Auto-generated method stub JTree tree=(JTree)e.getSource(); //获取当前选中的节点
DefaultMutableTreeNode selectnode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
String nodename=selectnode.toString(); jl.setText("您当前选择的节点为:"+nodename); } }

java 实现树形结构的更多相关文章

  1. java返回树形结构的正确姿势

    业务场景 通常我们前端需要一个树形的导航菜单或者分类菜单,如后台权限管理中的权限树,亦或者下面例子中商城系统的商品分类多级菜单(一般为三级菜单) 数据库设计 数据库设计,采用parentId来指向自己 ...

  2. Java创建树形结构算法实例

    在JavaWeb的相关开发中经常会涉及到多级菜单的展示,为了方便菜单的管理需要使用数据库进行支持,本例采用相关算法讲数据库中的条形记录进行相关组装和排序讲菜单组装成树形结构. 首先是需要的JavaBe ...

  3. JAVA获取树形结构

    package com.nnmzkj.common.dto; import lombok.Data; import java.io.Serializable;import java.util.Arra ...

  4. Java实现树形结构的数据转Json格式

    在项目中难免会用到树形结构,毕竟这是一种常用的组织架构.楼主这里整理了两个实现的版本,可以直接拿来使用,非常方便. 楼主没有单独建项目,直接在以前的一个Demo上实现的.第一种,看下面代码: pack ...

  5. java后台树形结构展示---懒加载

    一.数据库设计 二.实体类:entity import com.joyoung.cloud.security.common.validatedGroup.Add;import com.joyoung. ...

  6. 使用递归算法结合数据库解析成java树形结构

    使用递归算法结合数据库解析成java树形结构 1.准备表结构及对应的表数据a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCHA ...

  7. java将list转为树形结构的方法

    目录 1.通过转化成json封装数据 2.通过java8 stream转换 1.通过转化成json封装数据 原始数据如下 [ { "name":"甘肃省", & ...

  8. Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级

    在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...

  9. java树形结构工具类

    一.树形结构数据一般都是以子父id的形式存在数据库中,查询的时候只是带有子id和parent_id的List集合 并不是树形结构,所以我们现在要将普通的List集合转换为树结构数据(本工具类扩展操作树 ...

随机推荐

  1. 初学JQuery相关知识点

    [简单的JQuery]注册事件的函数. $(document).ready(function(){}) [JQuery提供的函数]$.map(array,fn) 对数组array中每个元素调用fn函数 ...

  2. Linux基本命令 网络命令

    概述 网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ...

  3. cocos打包出现错误,执行命令出错,返回值:2。 Traceback (most recent call last): File "E:\cocos_workspace\MyGameOne\proj.android\build_native.py", line 43, in <module> build(opts.build_mode) File "E:\cocos_workspace\MyGa

    先看看NDK的版本,如果不行,就删除\proj.android\obj\local\armeabi下的文件.

  4. ES6 随记(3.1)-- 字符串的拓展

    上一章请见: 1. ES6 随记(1)-- let 与 const 2. ES6 随记(2)-- 解构赋值 4. 拓展 a. 字符串的拓展 有些字符需要 4 个字节储存,比如 \uD83D\uDE80 ...

  5. python之使用__future__(解决版本不同,不兼容问题)

    Python的新版本会引入新的功能,但是,实际上这些功能在上一个老版本中就已经存在了.要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现. 例如,Python 2.7的整数 ...

  6. curl扩展代码

    /** * * curl 支持post * @param string $base_url 基础链接 * @param array $query_data 需要请求的数据 * @param strin ...

  7. INSPIRED启示录 读书笔记 - 第9章 产品副经理

    发现帮手 从本质上讲,产品就是创意,产品经理的职责是想出好点并加以实现.我们需要好点子,有些想法是我们自己的创意,但如果仅依靠自己,就会严重限制创意的发挥 做产品要找公司最聪明的人合作,发现公司里潜在 ...

  8. Docker 三剑客

    Docker三剑客: Docker-Machine Docker Machine is a tool that lets you install Docker Engine on virtual ho ...

  9. Luogu-3878 [TJOI2010]分金币

    这题和在我长郡考试时的一道题思路差不多...考虑折半搜索,预处理左半边选的方案所产生的数量差值\(x\)以及价值差值\(y\),把\(y\)扔到下标为\(x\)的set里面,然后在搜索右半边,每搜出一 ...

  10. 域名注册中EAP期间是什么意思

    所谓域名申请期间的EAP指的是,域名优先注册期,行业上也称为“早期接入期”,这个期间的时间是由该域名所在的管理注册局定,而这个EPA期的时间长度也不一样,有的是一个星期,也有的长达两个星期. 域名EA ...