📄 dirtree.java
字号:
/*
* Created on 2004-5-31
*/
package yuchifang.javaIDE.util;
import java.io.File;
import java.io.FileFilter;
import java.util.List;
import java.util.Vector;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
/**
* @author yuchifang
*/
public class DirTree extends JTree
{
private DirNode root;
public DirTree(File file)
{
root = new DirNode(file);
setModel(new DefaultTreeModel(root));
setRootVisible(false);//##不显示"我的电脑"节点
}
public void setAcceptedExtensions(List extensions)
{
root.setAcceptedExtensions(extensions);
}
public void addAcceptedExtension(String ext)
{
root.addAcceptedExtension(ext);
}
public void clearAcceptedExtensions()
{
root.clearAcceptedExtensions();
}
public void removeAcceptedExtension(String ext)
{
root.removeAcceptedExtension(ext);
}
public List getAcceptedExtensions()
{
return root.getAcceptedExtensions();
}
}
class DirNode extends DefaultMutableTreeNode
{
private File file;
private int childCount;
private boolean hasLoaded;
private static List extensions = new Vector();
public DirNode(File file)
{
this.file = file;
}
public boolean isLeaf()
{
if (file != null)
return file.isFile();
return false;
}
public String toString()
{
if (file != null)
{
if (file.getName().equals(""))
{
String s = file.getPath();
if (s.endsWith("\\")) s = s.substring(0, s.length() - 1);
return s;
}
return file.getName();
}
return "";
}
/**
* 获取子节点数目,如果子节点尚未装载则装载之
*/
public int getChildCount()
{
if (!hasLoaded)
{
loadChilds();
hasLoaded = true;
}
return childCount;
}
/**
* 装载子节点
*/
private void loadChilds()
{
if (file != null)
{
if (!file.isDirectory()) return;
File[] files = file.listFiles(
new FileFilter()
{
public boolean accept(File f)
{
return f.isDirectory();
}
}
);
for (int i = 0; i < files.length; i++)
{
insert(new DirNode(files[i]), childCount++);
}
files = file.listFiles(
new FileFilter()
{
public boolean accept(File f)
{
if (!f.isFile()) return false;
if (extensions.size() <= 0) return true;
for (int i=0; i<extensions.size(); i++)
{
if (f.getName().endsWith((String)extensions.get(i)))
return true;
}
return false;
}
}
);
for (int i = 0; i < files.length; i++)
{
insert(new DirNode(files[i]), childCount++);
}
}//if (file != null)
else
{
File[] files = File.listRoots();
for (int i = 0; i < files.length; i++)
{
insert(new DirNode(files[i]), childCount++);
}
}// else
}
void setAcceptedExtensions(List exts)
{
extensions = exts;
}
void addAcceptedExtension(String ext)
{
extensions.add(ext);
}
void clearAcceptedExtensions()
{
extensions.clear();
}
void removeAcceptedExtension(String ext)
{
extensions.remove(ext);
}
List getAcceptedExtensions()
{
return extensions;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -