java树形目录展示
package test;
import java.awt.Component;
import java.awt.Container;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
public class MyTree extends JFrame {
private Container con;
private JTree tree;
private DefaultTreeModel treeModel;
private Map<String,ArrayList<String>>map=new HashMap<String,ArrayList<String>>();
public MyTree(String s,String root){
super(s);
con=getContentPane();
DefaultMutableTreeNode rt=new DefaultMutableTreeNode(root);
treeModel = new DefaultTreeModel(rt);
//DefaultMutableTreeNode r1=new DefaultMutableTreeNode("book");
//treeModel.insertNodeInto(r1, rt, rt.getChildCount());
}
private void ShowTree(){
JTree tree = new JTree(treeModel);
JScrollPane scrollpane=new JScrollPane(tree);
con.add(scrollpane);
setSize(400,400);
setVisible(true);
validate();
setVisible(true); //设置可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void add(){
DefaultMutableTreeNode root=(DefaultMutableTreeNode) treeModel.getRoot();
String sf=root.toString();
for(String Key:map.keySet()){
if(sf.equals(Key)){
continue;
}
else
{
addnode(root,Key);
}
}
System.out.println("ok!");
}
private void init(){
ArrayList<String>li=new ArrayList<String>();
li.add("book");
li.add("hotel");
li.add("ride");
map.put("travel", li);
ArrayList<String>li1=new ArrayList<String>();
li1.add("search");
li1.add("social");
map.put("book", li1);
ArrayList<String>li2=new ArrayList<String>();
li2.add("X");
li2.add("Y");
map.put("hotel", li2);
System.out.println("mapsize"+map.size());
ArrayList<String>li3=new ArrayList<String>();
li3.add("X1");
li3.add("Y1");
map.put("X", li3);
}
private void addnode(DefaultMutableTreeNode n,String key){
ArrayList<String>list=map.get(key);
// DefaultMutableTreeNode root=(DefaultMutableTreeNode) treeModel.getRoot();
Enumeration<?> enumeration=n.children();
while(enumeration.hasMoreElements()){
DefaultMutableTreeNode node1=(DefaultMutableTreeNode) enumeration.nextElement();
String str=node1.toString();
if(str.equals(key)){
for(String s:list){
DefaultMutableTreeNode r1=new DefaultMutableTreeNode(s);
treeModel.insertNodeInto(r1,node1,node1.getChildCount());
}
}
addnode(node1,key);
}
}
private void addroot(){
DefaultMutableTreeNode root=(DefaultMutableTreeNode) treeModel.getRoot();
String sroot=root.toString();
ArrayList<String>list=map.get(sroot);
for(String sr:list){
DefaultMutableTreeNode r1=new DefaultMutableTreeNode(sr);
treeModel.insertNodeInto(r1,root,root.getChildCount());
}
}
public static void main(String[] args) {
MyTree tree=new MyTree("目录展示","travel");
tree.init();
tree.addroot();
tree.add();
tree.ShowTree();
}
}
java树形目录展示的更多相关文章
- Java实现遍历N级树形目录结构
最近挺忙,一直在做项目,然后有个树形目录结构需要返回给前端,这里给大家说一下实现的思路. 具体达到的效果类似: 一级目录A: 二级目录A: 三级目录: 四级目录: 文件.txt 二级目录B: 文件1. ...
- eclipse项目目录展示结构设置
我因为前后端都搞过, 解除过很多的开发IDE,说真的,很多的项目目录结构都是一级一级分开,然后我可以通过展开等操作来查看文件等资源信息,结果呢?java的开发IDE eclipse默认的项目目录展示简 ...
- IDEA从Github中Clone Maven项目,解决树形目录及Jar包依赖的问题
很多人在开发中都会碰到的一个问题,当我们用IDEA从Github中检出Maven工程后(Java),发现既不能运行,也不能编译,左侧的树形目录还怪怪的,现在就来说说如何解决这个问题. IDEA从git ...
- [moka同学收藏]Vim升华之树形目录插件NERDTree安装图解
无意中看到实验室的朋友使用的vim竟然能在左边显示树形目录,感觉很方便,这样子文件夹有什么文件一目了然.她说是一个插件叫NERDTree,安装执行后的效果如下,不是你想要的效果就别安了.我的系统是Ub ...
- Vim升华之树形目录插件NERDTree安装图解
来源:CSDN 作者:mybelief321 无意中看到实验室的朋友使用的vim竟然能在左边显示树形目录,感觉很方便,这样子文件夹有什么文件一目了然.他说是一个插件叫NERDTree,安装执行后的效果 ...
- Winform开发主界面菜单的动态树形列表展示
我在之前很多文章里面,介绍过Winform主界面的开发,基本上都是标准的界面,在顶部放置工具栏,中间区域则放置多文档的内容,但是在顶部菜单比较多的时候,就需要把菜单分为几级处理,如可以在顶部菜单放置一 ...
- vim 树形目录插件NERDTree安装及简单用法
转自: http://blog.csdn.net/love__coder/article/details/6659103 1,安装NERDTree插件 先下载,官网:http://www.vim.or ...
- windows中java读目录空格变成%20 处理方法
URL url = Thread.currentThread().getContextClassLoader().getResource(""); String path = ur ...
- Java生成目录
Java生成目录 1.说明 推断目录是否存在,假设不存在就创建该目录.并打印其路径.假设存在,打印其路径 2.实现源代码 /** * @Title:BuildFolder.java * @Packag ...
随机推荐
- windows核心编程 - 线程基础
一.基本概念: 一个进程至少需要一个线程. 组成:一个线程包括仅包括一个线程堆栈和一个线程内核对象 线程堆栈:用于维护线程在执行代码时需要的所有函数参数和局部变量 线程内核对象:操作系统用它来对线程实 ...
- 游记——noip2016
2016.11.18 (day 0) 呆在家. 悠闲地呆在家.. 明后天可能出现的错误: 1)没打freopen.打了ctime: 2)对拍程序忘记怎么写了...忘记随机化种子怎么写了: 3)不知道厕 ...
- GIT-查看本地html帮助文档
GIT安装后可以直接在命令行中通过指令调取本地html帮助文档如下所示: 格式: git help remote--git help 指令名称 git help remote 显示结果 获取branc ...
- Wrestling Match---hdu5971(2016CCPC大连 染色法判断是否是二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5971 题意:有n个人,编号为1-n, 已知X个人是good,Y个人是bad,m场比赛,每场比赛都有一个 ...
- Resharper 8.2 注册码
用户名:ronle注册码:ZoJzmeVBoAv9Sskw76emgksMMFiLn4NM
- SQL CURSOR
SET NOCOUNT ON; DECLARE @vendor_id int, @vendor_name nvarchar(50), @message varchar(80), @produc ...
- bugs
2016-09-04 10:24:14.503 Scgl[1035:341694] You've implemented -[<UIApplicationDelegate> applica ...
- JMeter学习-039-JMeter 3.0 生成 dashboard HTML 报告图表中文乱码
近期,经常有人问 JMeter 3.0 使用时,生成的 HTML 报告图表中的中文乱码问题.在此,简略的说一下解决的方法. 编码相关信息如下: 1.查看控制 csv.xml 等配置结果文件生成.读取的 ...
- WPF 仪表盘 刻度盘 动态 加载中 开源
1. 表盘 参数可以设置, codeproject上写的.网址在这里. 源码里有demo,很详细. 源码在这里. 2. 动态Loading 截图效果跟实际有点不一样. 自己把源码写成 资源就好用了呗 ...
- Javascript模板引擎:Hogan
hogan.js是一个开源前端模板引擎,无逻辑的设计,简单好用,性能也不错. 使用 引入hogan.js,下载链接:http://www.bootcdn.cn/hogan.js/,然后通过hogan. ...