⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filenode.java

📁 面向对象设计项目
💻 JAVA
字号:
package SpellCheck;

import java.io.File;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.tree.DefaultMutableTreeNode;

class FileNode{
	protected File m_file;

	public FileNode(File file){
		m_file = file;
	}

	public File getFile(){ 
		return m_file;
	}

	public String toString(){ 
		return m_file.getName().length() > 0 ? m_file.getName() : m_file.getPath();
	}

	public boolean expand(DefaultMutableTreeNode parent){
		DefaultMutableTreeNode flag = (DefaultMutableTreeNode)parent.getFirstChild();
		if (flag==null)   					//第一个子节点为空
			return false;
		Object obj = flag.getUserObject();
		if (!(obj instanceof Boolean))
			return false;      				//已展开

		parent.removeAllChildren();  		//移除所有子节点

		File[] files = listFiles();
		if (files == null)
			return true;					//未展开

		Vector<FileNode> v = new Vector<FileNode>();

		for (int k=0; k<files.length; k++){
			File f = files[k];
			if (!(f.isDirectory()))
				continue;

			FileNode newNode = new FileNode(f);
   
			boolean isAdded = false;
			for (int i=0; i<v.size(); i++){
				FileNode nd = (FileNode)v.elementAt(i);
				if (newNode.compareTo(nd) < 0){
					v.insertElementAt(newNode, i);
					isAdded = true;
					break;
				}
			}
			if (!isAdded)
				v.addElement(newNode);
		}

		for (int i=0; i<v.size(); i++){
			FileNode nd = (FileNode)v.elementAt(i);
			IconData idata = new IconData(FileTree.ICON_FOLDER,FileTree.ICON_EXPANDEDFOLDER, nd);
			DefaultMutableTreeNode node = new 
			DefaultMutableTreeNode(idata);
			parent.add(node);
			if (nd.hasSubDirs())
				node.add(new DefaultMutableTreeNode(new Boolean(true) ));
		}
		return true;
	}

	public boolean hasSubDirs(){
		File[] files = listFiles();
		if (files == null)
			return false;
		for (int k=0; k<files.length; k++){
			if (files[k].isDirectory())
				return true;
		}
		return false;
	}
 
	public int compareTo(FileNode toCompare){ 
		return  m_file.getName().compareToIgnoreCase(toCompare.m_file.getName() ); 
	}

	protected File[] listFiles(){
		if (!m_file.isDirectory())
			return null;
		try{
			return m_file.listFiles();
		}
		catch (Exception ex){
			JOptionPane.showMessageDialog(null,"不能读取文件夹 "+m_file.getAbsolutePath(),"错误",2);
			return null;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -