亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jfiletree.java

?? 能廣泛實用的東東
?? JAVA
字號:
package com.sunking.swing;

import java.io.*;
import java.util.*;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;
import javax.swing.tree.*;

/**
 * <p>Title: OpenSwing</p>
 * <p>Description: JFileTree 文件樹</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
 * @version 1.0
 */

public class JFileTree extends JTree implements Serializable{
    public static final FileSystemView fileSystemView =
        FileSystemView.getFileSystemView();
    DefaultTreeModel treeModel;
    private java.io.FileFilter filter = null;

    /**
     * 只瀏覽目錄的目錄樹
     */
    public JFileTree(){
        this(new DirFilter());
    }

    /**
     * 指定過濾器的文件樹
     * @param filter FileFilter 指定過濾器
     */
    public JFileTree(java.io.FileFilter filter){
        FileNode root = new FileNode(fileSystemView.getRoots()[0], filter);
        treeModel = new DefaultTreeModel(root);
        root.explore();
        treeModel.nodeStructureChanged(root);
        this.setModel(treeModel);
        addTreeExpansionListener(new JFileTreeExpandsionListener());
        setCellRenderer(new JFileTreeCellRenderer());
    }

    /**
     * 取得當前選擇的節點
     * @return FileNode
     */
    public FileNode getSelectFileNode(){
        TreePath path = getSelectionPath();
        if(path == null || path.getLastPathComponent() == null){
            return null;
        }
        return(FileNode)path.getLastPathComponent();
    }

    /**
     * 設置當前選擇的節點
     * @param f FileNode
     * @throws Exception
     */
    public void setSelectFileNode(FileNode f) throws Exception{
        this.setSelectFile(f.getFile());
    }

    /**
     * 取得當前選擇的文件或目錄
     * @return File
     */
    public File getSelectFile(){
        FileNode node = getSelectFileNode();
        return node == null ? null : node.getFile();
    }

    /**
     * 設置當前選擇的文件或目錄
     * @param f File
     * @throws Exception
     */
    public void setSelectFile(File f) throws Exception{
        FileNode node = this.expandFile(f);
        TreePath path = new TreePath(node.getPath());
        this.scrollPathToVisible(path);
        this.setSelectionPath(path);
        this.repaint();
    }

    /**
     * 展開指定的文件或目錄
     * @param f File
     * @return FileNode
     * @throws Exception
     */
    public FileNode expandFile(File f) throws Exception{
        if(!f.exists()){
            throw new java.io.FileNotFoundException(f.getAbsolutePath());
        }
        Vector vTemp = new Vector();
        File fTemp = f;
        while(fTemp != null){
            vTemp.add(fTemp);
            fTemp = fileSystemView.getParentDirectory(fTemp);
        }

        FileNode nParent = (FileNode)treeModel.getRoot();
        for(int i = vTemp.size() - 1; i >= 0; i--){
            fTemp = (File)vTemp.get(i);
            nParent.explore();
            for(int j = 0; j < nParent.getChildCount(); j++){
                FileNode nChild = (FileNode)nParent.getChildAt(j);
                if(nChild.getFile().equals(fTemp)){
                    nParent = nChild;
                }
            }
        }
        return nParent;
    }

    /**
     *
     * <p>Title: OpenSwing</p>
     *
     * <p>Description: 文件樹修飾器</p>
     *
     * <p>Copyright: Copyright (c) 2004</p>
     *
     * <p>Company: </p>
     *
     * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
     * @version 1.0
     */
    class JFileTreeCellRenderer extends DefaultTreeCellRenderer{
        public Component getTreeCellRendererComponent(JTree tree, Object value,
            boolean sel, boolean expanded,
            boolean leaf, int row,
            boolean hasFocus){
            super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
                                               row,
                                               hasFocus);
            try{
                FileNode node = (FileNode)value;
                closedIcon = fileSystemView.getSystemIcon(((FileNode)value).
                    getFile());
                openIcon = closedIcon;
                setIcon(closedIcon);
            } catch(Exception ex){
            }
            return this;
        }
    }

    /**
     *
     * <p>Title: OpenSwing</p>
     *
     * <p>Description: 文件樹展開事件監聽器</p>
     *
     * <p>Copyright: Copyright (c) 2004</p>
     *
     * <p>Company: </p>
     *
     * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
     * @version 1.0
     */
    class JFileTreeExpandsionListener implements TreeExpansionListener{
        public JFileTreeExpandsionListener(){}

        public void treeExpanded(TreeExpansionEvent event){
            TreePath path = event.getPath();
            if(path == null || path.getLastPathComponent() == null)
                return;
            setCursor(new Cursor(Cursor.WAIT_CURSOR));
            FileNode node = (FileNode)path.getLastPathComponent();
            node.explore();
            JTree tree = (JTree)event.getSource();
            DefaultTreeModel treeModel = (DefaultTreeModel)tree.getModel();
            treeModel.nodeStructureChanged(node);
            setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
        }

        public void treeCollapsed(TreeExpansionEvent event){}
    }

    /**
     *
     * <p>Title: OpenSwing</p>
     *
     * <p>Description:文件節點 </p>
     *
     * <p>Copyright: Copyright (c) 2004</p>
     *
     * <p>Company: </p>
     *
     * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
     * @version 1.0
     */
    public static class FileNode extends DefaultMutableTreeNode{
        private boolean explored = false;
        private java.io.FileFilter filter = null;

        public FileNode(File file, java.io.FileFilter filter){
            if(filter == null){
                this.filter = new DirFilter();
            } else{
                this.filter = filter;
            }
            setUserObject(file);
        }

        public boolean getAllowsChildren(){
            return isDirectory();
        }

        public boolean isDirectory(){
            return!isLeaf();
        }

        public boolean isLeaf(){
            return getFile().isFile();
        }

        public File getFile(){
            return(File)getUserObject();
        }

        public boolean isExplored(){
            return explored;
        }

        public void setExplored(boolean b){
            explored = b;
        }

        public String toString(){
            if(getFile() instanceof File)
                return fileSystemView.getSystemDisplayName((File)getFile());
            else
                return getFile().toString();
        }

        /**
         * 展開節點
         */
        public void explore(){
            if(!explored){
                explored = true;
                File file = getFile();
                //如果這里使用 file.listFiles(filter) 有BUG
                File[] children = file.listFiles();
                if(children == null || children.length == 0){
                    return;
                }
                //過濾后排序,選加入排序后的目錄, 再加入排序后的文件
                ArrayList listDir = new ArrayList();
                ArrayList listFile = new ArrayList();
                for(int i = 0; i < children.length; ++i){
                    File f = children[i];
                    if(filter.accept(f)){
                        if(f.isDirectory()){
                            listDir.add(f);
                        }else{
                            listFile.add(f);
                        }
                    }
                }
                Collections.sort(listDir);
                Collections.sort(listFile);
                for(int i = 0; i < listDir.size(); i++){
                    add(new FileNode((File)listDir.get(i),filter));
                }
                for(int i = 0; i < listFile.size(); i++){
                    add(new FileNode((File)listFile.get(i),filter));
                }
            }
        }
    }
    /**
     *
     * <p>Title: OpenSwing</p>
     *
     * <p>Description:目錄過濾器 </p>
     *
     * <p>Copyright: Copyright (c) 2004</p>
     *
     * <p>Company: </p>
     *
     * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
     * @version 1.0
     */
    public static class DirFilter implements java.io.FileFilter{
         public boolean accept(File pathname){
             return pathname.isDirectory();
         }
    }
    /**
     *
     * <p>Title: OpenSwing</p>
     *
     * <p>Description: 所有文件過濾器</p>
     *
     * <p>Copyright: Copyright (c) 2004</p>
     *
     * <p>Company: </p>
     *
     * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
     * @version 1.0
     */
    public static class AllFileFilter implements java.io.FileFilter{
         public boolean accept(File pathname){
             return true;
         }
    }
    /**
     *
     * <p>Title: OpenSwing</p>
     *
     * <p>Description:擴展名過濾器 </p>
     *
     * <p>Copyright: Copyright (c) 2004</p>
     *
     * <p>Company: </p>
     *
     * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
     * @version 1.0
     */
    public static class ExtensionFilter implements java.io.FileFilter{
        String extensions[];
        public ExtensionFilter(String extensions[]){
            this.extensions = new String[extensions.length];
            for(int i = 0; i < extensions.length; i++){
                this.extensions[i] = extensions[i].toLowerCase();
            }
        }

        public boolean accept(File pathname){
            if(pathname.isDirectory()){
                return true;
            }
            String name = pathname.getName().toLowerCase();
            for(int i = 0; i < extensions.length; i++){
                if(name.endsWith(this.extensions[i])){
                    return true;
                }
            }
            return false;
        }
    }

    public static void main(String[] args){
        JFrame frame = OpenSwingUtil.createDemoFrame("JFileTree Demo");
        frame.setSize(600, 400);
        JFileTree tree = new JFileTree();
        try{
            tree.setSelectFile(new File("C:/"));
        } catch(Exception ex){
            ex.printStackTrace();
        }
        Container pContent = frame.getContentPane();
        pContent.setLayout(new BorderLayout());
        JPanel pNorth = new JPanel(new GridLayout(1,3));
        JPanel pCenter = new JPanel(new GridLayout(1,3));
        pNorth.add(new JLabel("Directory only"));
        pNorth.add(new JLabel("All file"));
        pNorth.add(new JLabel("Directory and *.doc,*.txt file"));
        pCenter.add(new JScrollPane(tree));
        pCenter.add(new JScrollPane(new JFileTree(new AllFileFilter())));
        pCenter.add(new JScrollPane(new JFileTree(
            new ExtensionFilter(new String[]{"doc", "txt"}))));
        pContent.add(pNorth, BorderLayout.NORTH);
        pContent.add(pCenter, BorderLayout.CENTER);
        frame.setVisible(true);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品费精品国产一区二区| 肉色丝袜一区二区| 国产清纯白嫩初高生在线观看91 | 欧美日韩不卡一区二区| 久久蜜桃一区二区| 国产精品对白交换视频 | 亚洲成人高清在线| 国产精品综合一区二区三区| 91丨porny丨首页| 日韩午夜小视频| 国产精品成人免费精品自在线观看 | 玉足女爽爽91| av成人免费在线观看| 亚洲精品在线免费观看视频| 亚洲电影中文字幕在线观看| 91小视频在线免费看| 久久久国产精品午夜一区ai换脸| 日本欧美久久久久免费播放网| 91麻豆精品在线观看| 亚洲国产精品精华液2区45| 看片的网站亚洲| 91精品国产综合久久精品图片| 一区二区三区在线观看国产| 99久久99久久精品免费观看| 国产精品久久99| 成人性生交大合| 国产精品色哟哟网站| 国产高清不卡二三区| 精品精品欲导航| 精油按摩中文字幕久久| 日韩美一区二区三区| 丝袜美腿亚洲一区| 欧美日韩一区二区三区在线看| 玉足女爽爽91| 欧美男男青年gay1069videost| 亚洲成人资源在线| 91.xcao| 九九国产精品视频| 国产欧美日韩在线看| 成人综合婷婷国产精品久久| 国产精品电影院| 在线观看亚洲专区| 婷婷六月综合亚洲| 欧美不卡一区二区三区| 国产一区二区三区观看| 国产精品无圣光一区二区| www.欧美日韩国产在线| 一级特黄大欧美久久久| 欧美男女性生活在线直播观看| 免费观看在线色综合| 精品国产麻豆免费人成网站| 丁香啪啪综合成人亚洲小说| 国产精品久久久久精k8 | 精品成人一区二区三区四区| 天天色图综合网| 欧美一级艳片视频免费观看| 亚洲一卡二卡三卡四卡五卡| 色综合久久精品| 一区二区三区中文字幕在线观看| 91尤物视频在线观看| 一区二区在线观看视频在线观看| 欧美日韩色一区| 日韩va欧美va亚洲va久久| 日韩欧美一二三| 国产91精品一区二区麻豆网站| 国产精品美女久久久久高潮| 欧美自拍偷拍一区| 精品一区二区三区香蕉蜜桃 | 欧美一级片在线观看| 伦理电影国产精品| 久久―日本道色综合久久| 国产一区二区三区四区在线观看| 久久婷婷色综合| 国产成人在线视频免费播放| 国产精品国产三级国产普通话三级| 91视频你懂的| 日本最新不卡在线| 国产视频亚洲色图| 色综合色综合色综合色综合色综合| 日韩极品在线观看| 国产精品久久久久久久裸模 | 日韩精品色哟哟| 亚洲国产精品二十页| 欧美体内she精高潮| 久久精品国产一区二区三区免费看 | 欧美国产成人精品| 在线影视一区二区三区| 国产v综合v亚洲欧| 亚洲最大成人综合| 精品欧美久久久| 一本色道综合亚洲| 国产成人免费视频一区| 一区在线播放视频| 欧美精选午夜久久久乱码6080| 国产一区在线观看视频| 亚洲人成网站在线| 精品欧美乱码久久久久久| 在线视频一区二区免费| 成人国产精品免费观看视频| 日韩在线观看一区二区| 国产精品免费看片| 欧美一区午夜视频在线观看| 成人污视频在线观看| 精品一区二区免费在线观看| 亚洲乱码国产乱码精品精小说 | 黄页视频在线91| 日本免费新一区视频| 亚洲成人动漫av| 亚洲国产成人av| 亚洲r级在线视频| 一区二区视频在线看| 一区二区三区欧美在线观看| 1024亚洲合集| 亚洲蜜臀av乱码久久精品| 中文字幕日韩一区| 亚洲欧美日韩人成在线播放| 亚洲天堂成人网| 一区二区三区在线视频观看 | 91在线免费视频观看| 国产a视频精品免费观看| 国产裸体歌舞团一区二区| 国产一区二区三区美女| 国产精品资源网站| 盗摄精品av一区二区三区| 成人在线视频一区| www.av亚洲| 在线观看亚洲一区| 69堂国产成人免费视频| 欧美xxxxx裸体时装秀| 最新中文字幕一区二区三区 | 日韩av午夜在线观看| 蜜乳av一区二区| 国产精品亚洲第一区在线暖暖韩国| 国产一区二区三区国产| 91美女片黄在线观看91美女| 欧美亚州韩日在线看免费版国语版| 欧洲日韩一区二区三区| 欧美久久久影院| ww亚洲ww在线观看国产| 中文字幕一区二区视频| 一区二区三区欧美在线观看| 日韩av一区二区三区四区| 国产黑丝在线一区二区三区| hitomi一区二区三区精品| 欧美日韩一区二区三区在线| 日韩精品在线一区二区| 亚洲国产精品精华液ab| 亚洲第一福利视频在线| 国产一区二区免费在线| 91麻豆6部合集magnet| 日韩一级免费一区| 综合电影一区二区三区 | 欧美一二三区精品| 国产精品视频线看| 日韩不卡在线观看日韩不卡视频| 国产馆精品极品| 欧美日韩精品一区二区三区蜜桃 | 欧美日韩亚洲综合一区| 久久影音资源网| 亚洲国产精品人人做人人爽| 韩国女主播一区二区三区| 91美女视频网站| 久久综合九色欧美综合狠狠| 亚洲国产精品久久人人爱 | 亚洲国产岛国毛片在线| 亚洲成人动漫在线免费观看| 成人免费毛片a| 日韩欧美国产一区二区三区 | 欧美国产日韩在线观看| 水蜜桃久久夜色精品一区的特点| 成人美女在线观看| 久久综合色一综合色88| 午夜精品福利一区二区三区蜜桃| 国产99久久久国产精品免费看| 欧美精品高清视频| 亚洲综合在线免费观看| 风流少妇一区二区| 26uuu久久综合| 日本不卡一区二区三区 | 日韩经典中文字幕一区| 91污在线观看| 国产精品久久久久久久久快鸭| 国产一区二区三区高清播放| 日韩天堂在线观看| 亚洲成av人影院在线观看网| 色哦色哦哦色天天综合| 亚洲美女视频一区| 99精品欧美一区| 亚洲日穴在线视频| 91麻豆产精品久久久久久| 国产精品午夜在线| 成人aa视频在线观看| 欧美激情在线一区二区| 国产不卡在线视频| 国产日韩欧美激情| 国产成人精品免费一区二区| 国产亚洲一区二区三区四区| 国产乱人伦偷精品视频免下载| 久久综合九色综合欧美亚洲| 国产在线一区观看|