[Swing]树形结构的实现
一般步骤:
1、建立根节点
private DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
2、建立树形模型
private DefaultTreeModel treeModel = new DefaultTreeModel(root);
3、建立树
private JTree tree = new JTree(treeModel);
4、向树内添加节点
DefaultMutableTreeNode node = new DefaultMutableTreeNode("一级节点");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("二级节点");
/*
方法:insertNodeInto(DefaultMutableTreeNode child, DefaultMutableTreeNode parent, int index)
形参:child 所要插入的节点
形参:parent 插入节点的上级节点
形参: index 插入节点在父节点下的位置
*/
treeModel.insertNodeInto(node, root, root.getChildCount());
treeModel.insertNodeInto(node2, node, node.getChildCount());
5、添加节点监听器
tree.addTreeSelectionListener(new TreeSelectionListener(){
public void valueChanged(TreeSelectionEvent e){
//监听器操作代码
}
});
6、添加显示
JFrame jf = new JFrame("树形结构");
jf.add(tree);
jf.setVisiable(true);
7、对树属性的一些描述方法举例
//获取树节点渲染器
DefaultTreeCellRenderer cellRenderer = tree.getCellRenderer();
//设置未选择时为黑色
cellRenderer.setTextNonSelectionColor(Color.black);
//设置选择时为蓝色
cellRenderer.setTextSelectionColor(Color.blue);
//设置选择模式只能选择一个
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
代码举例:
package test; import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit; import javax.swing.JFrame;
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; @SuppressWarnings("serial")
public class Test extends JFrame implements TreeSelectionListener{
private DefaultMutableTreeNode root, node_1, node_2;
private DefaultTreeModel treeModel;
private JTree tree;
public Test(){
this.setSize(200, 150);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - this.getSize().width)/2;
int y = (screenSize.height - this.getSize().height)/2;
this.setLocation(x, y); root = new DefaultMutableTreeNode("根节点");
node_1 = new DefaultMutableTreeNode("一级");
node_2 = new DefaultMutableTreeNode("二级"); treeModel = new DefaultTreeModel(root);
treeModel.insertNodeInto(node_1, root, root.getChildCount());
treeModel.insertNodeInto(node_2, node_1, node_1.getChildCount()); tree = new JTree(treeModel);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); DefaultTreeCellRenderer cellRenderer = (DefaultTreeCellRenderer)tree.getCellRenderer();
cellRenderer.setTextNonSelectionColor(Color.black);
cellRenderer.setTextSelectionColor(Color.blue); this.add(tree);
this.setVisible(true);
} public void valueChanged(TreeSelectionEvent e) { }
public static void main(String[] args){
@SuppressWarnings("unused")
Test test = new Test();
} }
运行如下图:

[Swing]树形结构的实现的更多相关文章
- 使用ztree.js,受益一生,十分钟学会使用tree树形结构插件
看到ztree.js,这几个字眼,毋庸置疑,那肯定就是tree树形结构了,曾经的swing年代有jtree,后来jquery年代有jstree和treeview,虽然我没写过,但是我见过,一些小功能做 ...
- 5JS树形结构菜单和jQuery版
第一版JS版HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- java 实现树形结构
package tree; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java ...
- 设计模式系列之组合模式(Composite Pattern)——树形结构的处理
说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...
- js文章列表的树形结构输出
文章表设计成这样了 后端直接给了无任何处理的json数据,现在要前端实现树形结构的输出,其实后端处理更简单写,不过既然来了就码出来 var doclist = [{ "id": 1 ...
- GridView 树形结构分组的功能
在“会飞的鱼”博客中看到GridView实现树形结构的代码,经过修改,添加了树形结构中的复选框功能,欢迎吐槽. 源地址:http://www.cnblogs.com/chhuic/archive/20 ...
- [从产品角度学EXCEL 02]-EXCEL里的树形结构
这是<从产品角度学EXCEL>系列第三篇. 前言请看: 0 为什么要关注EXCEL的本质 1 excel是怎样运作的 或者你可以去微信公众号@尾巴说数 获得连载目录. 本文仅由尾巴本人发布 ...
- C# EasyUI树形结构权限管理模块
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节和大家探讨下C#使用EasyUI树形结构/Tree构 ...
- YbSoftwareFactory 代码生成插件【十八】:树形结构下的查询排序的数据库设计
树形结构的排序在中国特色下十分普遍也非常重要,例如常说的五大班子,党委>人大>政府>政协>纪委,每个班子下还有部门,岗位,人员,最终排列的顺序通常需要按权力大小.重要性等进行排 ...
随机推荐
- javascript与浏览器学习(一)
待学习………… 20160421 标题:JavaScript中浏览器兼容问题 博客地址:http://www.cnblogs.com/DF-fzh/p/5408241.html 简单 ...
- java的reflection
Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性.例如,使用它能获得 Java 类中 ...
- Solr初步研究
Solr是一个高性能,采用Java5开发,Solr基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供 ...
- 运维工程师如果将web服务http专变为https
1:生成私钥 2:生成证书签署请求 3:在提供CA签署的web网站上,提交生成的证书签署请求 4:下载已经签署的CA证书 5:将证书的信息保留在web服务器中,且应用到提供web服务的 ...
- 敏捷冲刺DAY8
一. 每日会议 1. 照片 2. 昨日完成工作 第一次阶段测试. 3. 今日完成工作 对前七次敏捷冲刺的工作进行完善. 4. 工作中遇到的困难 浏览器兼容性问题.页面响应性能问题.内存溢出问题-- 二 ...
- FZU2122_又见LKity
题目是说给你一个替换串和目标串.把一个长串中的所有的替换串替换为目标串而且不递归地替换. 很简单,直接做一次KMP然后直接替换. 注意替换后跳到替换串的尾部. 注意大小写的问题. #include & ...
- SPA页面性能优化
1. 快速启动 —— 极大提升加载速度(important) 快速启动应用,并行发起 Bundle 加载&拉取初始数据.相信大家已经发现了,SPA 初始化时候,不得不等待 bundle 返回并 ...
- debug - vue中通过ajax获取数据时,如何避免绑定的数据中出现property of undefined错误
因为获取服务器是异步的,所以 vue 先绑定数据. 如果 ??? 是通过 ajax 异步获取的,在获取之前,???是未定义的.此时在外面的标签上添加一个 v-if="???" 可以 ...
- Ants UVA - 1411(km板题竟然让我换了个板子)
题意: 给出n个白点和n个黑点的坐标,要求用n条不相交的线段把它们连接起来,其中每条线段恰好连接一个白点和一个黑点,每个点恰好连接到一条线段 解析: 带入负的欧几里得距离求就好了 假设a1-b1 与 ...
- Eve-NG-Toolkit
Eve-NG-Toolkit 来源 http://www.emulatedlab.com/archives/694 参考 http://eve-ng.cn/doku.php http://foru ...