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

📄 filesystemmodel.java

📁 Java实现的explorer程序
💻 JAVA
字号:
/*
 * FileSystemModel.java
 *
 * Created on 2007年8月3日, 下午11:20
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package explorer;

/**
 *
 * @author king
 */

import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.*;

class myFile extends File{
    myFile (String name){
        super(name);
    }
    myFile (File parent,String child)
    {
        super(parent,child);
    }
    public String toString(){
        return this.getName(); 
    }
}

class FileSystemModel implements TreeModel{
     
    private File[] root;
    private Vector<File> rootvector;
    private Vector listeners;
    
    /** Creates a new instance of FileSystemModel */
    
    public FileSystemModel(){
        root = File.listRoots();
        rootvector = new Vector<File>();
        for (int i=0;i<root.length;i++)
            rootvector.addElement(root[i]);
        listeners = new Vector();
    }
    
    public boolean isRootVector(Object e)
    {
        boolean result = false;
        if(e.equals(rootvector))
            result = true;
        return result;
    }
    
    public Object getRoot(){
        return rootvector;
    }
    
    public Object getChild(Object parent,int index){
        if (!isRootVector(parent))
        {
            File directory = (File) parent;
            File[] directoryMembers = directory.listFiles(new Filter());
            return (new myFile(directoryMembers[index].getAbsolutePath()));
        }
        else
        {
            return (root[index]);
        }
    }
    
    public int getChildCount(Object parent){
        if (!isRootVector(parent))
        {
            File fileSystemMember = (File) parent;
            if (fileSystemMember.isDirectory())
            {
                File[] directoryMembers = fileSystemMember.listFiles(new Filter());
                return directoryMembers.length;
            }
            else
            {
                return 0;
            }
        }
        else
        {
            return root.length;
        }
    }
    
    public int getIndexOfChild(Object parent,Object child){
        if (!isRootVector(parent))
        {
            File directory = (File)parent;
            File directoryMember = (File)child;
            File[] directoryMemberNames = directory.listFiles(new Filter());
            int result = -1;
            for (int i=0;i<directoryMemberNames.length;++i)
            {
                if (directoryMember.equals(directoryMemberNames[i]))
                {
                    result = i;
                    break;
                }    
            }
            return result;
        }
        else
        {
            int result = -1;
            for (int i=0;i<root.length;i++)
            {
                if(child.equals(root[i]))
                {
                    result = i;
                    break;
                }
            }
            return result;
        }
    }
    
    public boolean isLeaf(Object node){
        if (!isRootVector(node))
            return ((File)node).isFile();
        else
            return false;
    }
    
    public void addTreeModelListener(TreeModelListener I){
        if (I!= null&&!listeners.contains(I)){
            listeners.addElement(I);
        }
    }
    
    public void removeTreeModelListener(TreeModelListener I){
        if (I!=null)
        {
            listeners.removeElement(I);
        }
    }
    
    public void valueForPathChanged(TreePath path,Object newValue){}
}

⌨️ 快捷键说明

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