package per.hwf.tree;
import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
public class ResourceTree extends JPanel {
private final JTree kernelTree;
private final JScrollPane kernelScrollPane;
public ResourceTree(String drive) {
kernelTree = new JTree(this.createTreeModel(drive));
kernelScrollPane = new JScrollPane(kernelTree);
this.setLayout(new BorderLayout());
this.add(kernelScrollPane, BorderLayout.CENTER);
kernelTree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getPath();
Object[] objs = path.getPath();
if (path != null) {
System.out.println("Path: "
+ objs[objs.length - 1].toString());
}
}
});
kernelTree.addTreeExpansionListener(new TreeExpansionListener() {
public void treeCollapsed(TreeExpansionEvent e) {
// do something
}
public void treeExpanded(TreeExpansionEvent e) {
UpdateStatus us = new UpdateStatus(e);
us.start();
}
class UpdateStatus extends Thread {
private TreeExpansionEvent tee;
UpdateStatus(TreeExpansionEvent e) {
tee = e;
}
public void run() {
System.out.println("Branch node is exploring......");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TreePath path = tee.getPath();
FileNode node = (FileNode) path
.getLastPathComponent();
if (!node.isExplored()) {
DefaultTreeModel model = (DefaultTreeModel) kernelTree
.getModel();
node.explore();
model.nodeStructureChanged(node);
}
System.out.println("Branch node explored.");
}
});
}
}
});
}
public ResourceTree() {
this(null);
}
private DefaultTreeModel createTreeModel() {
return createTreeModel(null);
}
private DefaultTreeModel createTreeModel(String drive) {
if (null == drive) {
drive = "C:\\";
}
// 此处缺少字符串校验(正则表达式)
File root = new File(drive);
FileNode rootNode = new FileNode(root);
rootNode.explore();
return new DefaultTreeModel(rootNode);
}
}
package per.hwf.tree;
import java.io.*;
import javax.swing.tree.*;
/*
* FileNode类是DefaultMutableTreeNode的简单继承。
* FileNode构造器将一个File对象制定为该TreeNode的用户对象(user object)。
*/
public class FileNode extends DefaultMutableTreeNode {
private boolean explored = false;
public FileNode(File file) {
setUserObject(file);
}
/*
* 覆盖了DefaultMutableTreeNode.getAllowsChildren()方法。
* 如果FileNode代表的是目录,则允许有子节点。
*/
public boolean getAllowsChildren() {
return isDirectory();
}
/*
* 覆盖了DefaultMutableTreeNode.isLeaf()方法。
* 如果FileNode代表的不是目录,那它就是一个叶子节点。
*/
public boolean isLeaf() {
return !isDirectory();
}
public File getFile() {
return (File) getUserObject();
}
public boolean isExplored() {
return explored;
}
public boolean isDirectory() {
File file = getFile();
return file.isDirectory();
}
/*
* 覆盖了DefaultMutableTreeNode.toString()方法。
* 返回路径的最后组件。
*/
public String toString() {
File file = (File) getUserObject();
String filename = file.toString();
int index = filename.lastIndexOf(File.separator);
return (index != -1 && index != filename.length() - 1) ? filename
.substring(index + 1) : filename;
}
public void explore() {
if (!isDirectory()) {
return;
}
if (!isExplored()) {
File file = getFile();
File[] children = file.listFiles();
for (int i = 0; i < children.length; ++i) {
add(new FileNode(children[i]));
}
explored = true;
}
}
}
分享到:
相关推荐
在C语言编程中,有时我们需要实现一些系统级别的功能,例如打开Windows操作系统的资源管理器并显示特定目录。这个“C语言函数包:windows下在资源管理器中打开相应目录”就是为了满足这种需求而设计的。它包含了一...
在VB.NET编程环境中,开发一款类似于Windows资源管理器的应用程序是一项常见的任务,这通常涉及到文件和目录的浏览、操作以及管理。本项目提供的源代码旨在帮助开发者理解如何利用VB.NET实现这一功能,为用户提供一...
在本文中,我们将深入探讨如何使用C#编程语言来实现一个功能完备的Windows资源管理器。这个项目旨在创建一个自定义的应用程序,该程序能够模拟并扩展Windows内置的资源管理器,提供文件和文件夹的基本操作,如新建、...
1. 模仿Windows的文件资源管理器对本机的文件目录树的显示,对文件目录进行查看和浏览,用地址栏、文件目录树、打开文件夹等方法都可以在文件目录之间进行跳转 2. 对文件的基本操作:打开、删除、批量删除、重命名、...
在IT领域,Windows资源管理器是一个非常重要的工具,它提供了用户与操作系统进行文件和文件夹交互的图形界面。本文将深入探讨如何使用C#语言来创建一个类似Windows资源管理器的应用程序,主要涉及的关键技术包括...
【C# WinForm仿Windows资源管理器DEMO详解】 C# WinForm仿Windows资源管理器DEMO是一个基于C#编程语言和Windows Forms框架构建的小型应用程序,旨在为开发者提供一个模仿真实Windows资源管理器功能的示例代码。这个...
总结来说,实现一个基于VC的Windows资源管理器涉及的主要步骤包括:使用CTreeCtrl构建目录结构,处理用户交互,实现文件操作功能,以及优化用户界面。通过熟练掌握MFC和Windows API,你可以创建出功能完备且用户友好...
在本文中,我们将深入探讨如何使用C#编程语言来实现一个功能类似于Windows文件资源管理器的应用程序。这个项目的核心目标是提供一个用户友好的界面,让用户可以浏览、操作和管理本地计算机上的文件和目录。 首先,...
它旨在模仿Windows操作系统中的经典资源管理器界面和功能,为用户提供文件和目录的浏览、操作体验。通过这个项目,开发者能够深入理解Java图形用户界面(GUI)的设计和实现,同时熟悉AWT和Swing组件的使用。 【描述...
创建Windows资源管理器的核心在于实现文件和目录的浏览功能。这需要用到`Directory`和`DirectoryInfo`类来获取目录信息,`File`和`FileInfo`类来处理文件。例如,你可以使用`Directory.GetFiles()`和`Directory....
JAVA 显示文件目录(像windows的资源管理器一样) 这个程序是使用 JAVA 语言编写的,目的是为了显示文件目录,类似于 Windows 的资源管理器。下面将详细讲解这个程序的知识点: 1. JAVA Swing 库 这个程序使用了 ...
JavaScript实现的Windows资源管理器是一种基于Web技术的文件管理和操作工具,它利用JavaScript语言的强大功能,为用户提供了类似于Windows操作系统中的资源管理器体验。在浏览器环境下,用户可以通过这个应用查看和...
在VB.NET中实现Windows资源管理器是一项常见的编程任务,它涉及到文件系统操作、用户界面设计以及数据呈现等多个方面的知识。Windows资源管理器是操作系统中用于浏览、管理和操作文件和文件夹的工具,开发者通常会...
"类似Windows资源管理器"这一概念通常指的是具有与微软Windows操作系统内置的资源管理器相似功能的应用程序或软件。Windows资源管理器是用户界面的核心部分,它允许用户浏览、组织、管理和操作计算机上的文件和...
在本项目中,"C++模拟Windows资源管理器源码"是一个旨在实现类似Windows操作系统资源管理器功能的程序。这个程序允许用户浏览、操作文件和目录,如打开、复制、移动、删除等基本操作,同时也可能包括一些高级功能,...
在IT领域,Windows资源管理器是操作系统Windows中的一个核心组件,它为用户提供了一种图形用户界面(GUI)来浏览、管理、操作计算机的文件和文件夹。本项目旨在实现一个仿照Windows资源管理器的基本功能,通过代码...
首先,**ctree控件**是一种用于显示文件系统目录结构的用户界面元素,类似于Windows资源管理器中的树形视图。它允许用户展开和折叠文件夹,浏览不同级别的目录。ctree控件通常提供了API或事件处理机制,使得开发者...
8. 实现了在当前路径下“返回上一级目录”的功能; 9. 实现了在主窗体上方地址栏直接输入文件路径,然后直接回车查看该路径下的文件列表的功能; 10. 实现了对当前计算机文件、文件夹的监控功能。可定制化程度较高...
Java仿Windows资源管理器,基于MVC实现,执行文件在bin目录下runme.jar或start.bat 目录说明: bin: 编译后的目标文件 icons: 程序运行需要用到的图标文件 src: 源代码文件 在功能上完全实现了资源...