window系统资源管理树

发现失业后都快成了义工了,常常有朋友叫帮忙,又不给工资!!哎....
昨天叫帮实现一个资源树,觉得挺有意思的,也顺便玩一下swing,学java到现在没玩过,惭愧。打开本core java ,翻了几页,于是就开干了..

package tree;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;

public class Myframe extends JFrame {

private JScrollPane js ;

private JTree jt;

private TreeNode mt;

public Myframe() {
initFrame();
}

/**
* 初始化用的...
*
*/
public void initFrame() {
super.setSize(200, 600);
super.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.js = new JScrollPane();
this.mt = new TreeNode();
this.jt = new JTree(this.mt.createRootNode(),true);
TreeAction ta = new TreeAction(this.jt);

this.mt.setJt(this.jt);
ta.setMt(this.mt);
this.jt.addTreeExpansionListener(ta);


this.js.setViewportView(this.jt);
this.add(this.js);
}

public JScrollPane getJs() {
return js;
}

public void setJs(JScrollPane js) {
this.js = js;
}

public JTree getJt() {
return jt;
}

public void setJt(JTree jt) {
this.jt = jt;
}

public TreeNode getMt() {
return mt;
}

public void setMt(TreeNode mt) {
this.mt = mt;
}

}


一下是事件监听器类

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package tree;

import java.io.File;

import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

/**
*
* @author chen
*/
public class TreeAction implements TreeExpansionListener {

private TreeNode mt ;

private JTree jt;

public TreeAction(JTree jtree){
this.jt = jtree;
}

//当前被选择的路径
private TreePath selectPath;

//当前被选择的节点
private DefaultMutableTreeNode selectNode;

public void treeExpanded(TreeExpansionEvent event) {
//获取当前选择的节点对象
this.selectNode = (DefaultMutableTreeNode) event.getPath().getLastPathComponent();

//如果是根节点,则直接返回
if(this.selectNode.isRoot()){
return;
}

//回去节点路径
this.selectPath = event.getPath();
String path = event.getPath().toString();

//把节点路径转为对应的系统文件的绝对路径
path = Tool.reperse(path);

if(this.jt.isExpanded(this.selectPath)){

this.mt.addTreeNode(this.selectNode,new File(path));
}

}

public void treeCollapsed(TreeExpansionEvent event) {
//获取当前选择的节点对象
this.selectNode = (DefaultMutableTreeNode) event.getPath().getLastPathComponent();

if(this.selectNode.isRoot()){
return;
}

//删除当前节点下的所有子节点,
this.selectNode.removeAllChildren();
this.selectPath = event.getPath();
if(!jt.isExpanded(this.selectPath)){
//用没有子节点的selectNode更新当前选择的节点
((DefaultTreeModel)jt.getModel()).reload(this.selectNode);
}
}

public JTree getJt() {
return jt;
}

public void setJt(JTree jt) {
this.jt = jt;
}

public TreeNode getMt() {
return mt;
}

public void setMt(TreeNode mt) {
this.mt = mt;
}

}


这个类是用来设置节点的

package tree;

import java.io.File;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;


public class TreeNode {

private String ROOT_NAME = "我的电脑";

private JTree jt;

private DefaultMutableTreeNode treeNode;

/**
* 根据系统的盘符数来初始化树根。
* @return
*/
public DefaultMutableTreeNode createRootNode(){
File dir = new File(".");
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(ROOT_NAME);

for(int i = 0; i < dir.listRoots().length; i++){
if(dir.listRoots()[i].isDirectory()){
String rootPath = dir.listRoots()[i].getPath();
this.treeNode = new DefaultMutableTreeNode(rootPath);
rootNode.add(this.treeNode);
this.treeNode = null;
}
}

return rootNode;
}


/**
* 根据当前节点所对应目录下的所有子目录,创建对应的子节点
* @param node
* @param dir
* @return
*/
public void addTreeNode(DefaultMutableTreeNode node,File dir){
if(node == null || dir == null)return;
if(!dir.isDirectory())return;

if(!node.isRoot()){
//获取当前目录下的所有文件的绝对路径
File file[] = dir.listFiles();

for(int i = 0; i < file.length; i ++){

//只要文件夹,并且不能是隐藏文件夹
if(file[i].isDirectory() && !file[i].isHidden()){

//为文件夹创建对应的子
this.treeNode = new DefaultMutableTreeNode(dir.list()[i]);

//把子节点加载到当前所选择的节点
((DefaultTreeModel)this.jt.getModel()).insertNodeInto(treeNode, node, node.getChildCount());

this.treeNode = null;
}
}
}
}


public JTree getJt() {
return jt;
}

public void setJt(JTree jt) {
this.jt = jt;
}

public DefaultMutableTreeNode getTreeNode() {
return treeNode;
}

public void setTreeNode(DefaultMutableTreeNode treeNode) {
this.treeNode = treeNode;
}


}


这个不知道怎么描述,先放着吧

package tree;

/**
*
* @author chen
*/
public class Tool {

public static String reperse(String str){
str = str.replace("[我的电脑, ","");
str = str.replace("]","");
str = str.replace(", ","\\");
str = str.replace("\\\\","\\");
return str;
}

}


这个是测试的

package tree;

import java.io.File;

public class MyMain {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Myframe mf = new Myframe();
mf.setVisible(true);
}

}

这里只显示目录,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值