发现失业后都快成了义工了,常常有朋友叫帮忙,又不给工资!!哎....
昨天叫帮实现一个资源树,觉得挺有意思的,也顺便玩一下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);
}
}
这里只显示目录,
- 大小: 13.8 KB
分享到:
相关推荐
本项目“C++编写的Windows资源管理器的资源树”旨在利用C++实现一个类似Windows资源管理器的功能,它是一个文件管理系统,能够以树状结构显示本地计算机上的文件和目录。 在Windows资源管理器中,用户通过资源树...
在Windows系统中,资源管理器是一个非常直观且实用的工具,而【仿windows资源管理器源码】则为开发者提供了一个学习和理解其工作原理的平台。这份源码实现了资源管理器的基本功能,并且添加了中文注释,便于初学者...
树形结构作为数据结构这门课中的一个重点...就比如经常接触的Windows系统中文件就是用的树形结构,因此用树形结构来模拟Windows中的文件管理是十分必要的。该代码也是vs2017中运行的,仅供参考,加深对树形结构的理解。
在Windows系统中,资源管理器是用户浏览、组织、管理和操作文件和文件夹的主要工具。通过模仿其界面和功能,开发者可以为其他平台或自定义需求构建类似的文件管理工具。 【描述】:“仿windows资源管理器” 仿制...
在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)来实现一个类似于Windows资源管理器的应用程序。重点将放在使用树形控件(CTreeCtrl)来展示文件系统结构,以及如何与之交互以实现浏览、选择和操作...
Windows操作系统资源管理器插件是增强其功能和用户体验的有效手段,尤其对于那些对原生功能感到不满的用户。这些插件通常集成到Windows资源管理器的上下文菜单中,为用户提供更多便捷的操作选项。 Folderbox 1.20 ...
《模拟Windows资源管理器 第二版》是一款基于.NET框架实现的应用程序,旨在模仿Windows操作系统中的经典资源管理器功能。此项目的核心技术在于使用递归算法来构建和展示文件系统的树形结构,以及利用ListView控件来...
### C# WPF 实现 Windows 资源管理器(附源码)—— 深入解析 #### 核心知识点概述 本文档详细介绍了如何使用C#与WPF技术来构建一个类似于Windows资源管理器的用户界面。该文档不仅提供了完整的源代码,还深入分析...
在IT领域,Windows资源管理器是一个非常重要的工具,它提供了用户与操作系统进行文件和文件夹交互的图形界面。本文将深入探讨如何使用C#语言来创建一个类似Windows资源管理器的应用程序,主要涉及的关键技术包括...
在IT领域,Windows资源管理器是操作系统Windows中的一个核心组件,它为用户提供了一种图形用户界面(GUI)来浏览、管理、操作计算机的文件和文件夹。本项目旨在实现一个仿照Windows资源管理器的基本功能,通过代码...
文件系统模拟和Windows资源管理器的模拟是计算机科学领域中重要的实践项目,它涉及到操作系统、用户界面设计以及文件管理等多个核心知识点。在这个项目中,开发者需要实现一个类似于Windows资源管理器的界面,允许...
JavaScript实现的Windows资源管理器是一种基于Web技术的文件管理和操作工具,它利用JavaScript语言的强大功能,为用户提供了类似于Windows操作系统中的资源管理器体验。在浏览器环境下,用户可以通过这个应用查看和...
MFC写的资源管理器,含注释 帖点代码片段出来 // 获取盘符到目录树,作为根目录下一级节点 void CwinResManagerDlg::GetLogicalDrives(HTREEITEM hRoot) { size_t szAllDrivesStrings = GetLogicalDriveStrings(0...
在Windows操作系统中,资源管理器是一个不可或缺的工具,它允许用户直观地查看硬盘上的目录结构,执行文件操作如复制、移动、删除等,以及管理文件属性。这里我们主要讨论资源管理器的原理以及与之相关的编程知识。 ...
首先,**ctree控件**是一种用于显示文件系统目录结构的用户界面元素,类似于Windows资源管理器中的树形视图。它允许用户展开和折叠文件夹,浏览不同级别的目录。ctree控件通常提供了API或事件处理机制,使得开发者...
【标题】"vb编写的模拟windows资源管理器"揭示了一个使用Visual Basic(VB)编程语言创建的应用程序,该程序旨在模仿Windows操作系统中的内置资源管理器。这个应用不仅提供了与原版资源管理器相似的用户界面,而且在...
"仿WindowXP资源管理器可供学习"这一标题表明,这是一个关于使用C#编程语言构建的,模仿Windows XP操作系统中的经典资源管理器的学习项目。资源管理器是操作系统中用于浏览、管理和操作文件及文件夹的重要工具。在这...
资源管理器树状菜单,Delphi源代码,也就是Windows资源管理器中的展开树菜单,通过这个菜单你或许能了解到: 几个对项目标识符进行操作的函数、将二进制表示的项目标识符列表转换成有可识的项目名、获得每个文件夹...
1. **界面设计**:Windows资源管理器的界面由多个组件构成,如树形视图(TreeView)用于显示文件夹结构,列表视图(ListView)用于展示文件和文件夹。在DELPHI中,我们可以找到对应的TTreeView和TListView控件,通过...
资源管理器是Windows操作系统中的一个核心组件,它是一个图形化的文件管理工具,用于管理和操作计算机的硬件和软件资源。用户可以通过资源管理器来浏览、组织、创建、移动、复制、删除文件和文件夹,以及查看系统的...