国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
采用SWT實現(xiàn)系統(tǒng)文件夾的樹形結(jié)構(gòu)顯示
采用SWT實現(xiàn)系統(tǒng)文件夾的樹形結(jié)構(gòu)顯示
2008-09-08 19:57
/**
* 使用SWT實現(xiàn)的系統(tǒng)文件夾目錄的顯示,并讀取文件夾目錄下文件的大?。ǜ袷交@示)
* 實現(xiàn)選擇文件夾、打印文件夾名、文件夾的絕對路徑
* 顯示選準(zhǔn)的文件所在的路徑,不顯示隱藏文件路徑
*/

package test;

import java.io.File;
import java.text.NumberFormat;

import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.swt.SWT;

public class Treetest {
    //類似資源管理器的樹,其中包含鼠標(biāo)雙擊事件
    public static void main(String[] args) {
        final Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setText("系統(tǒng)文件夾目錄的Tree顯示");
        shell.setLayout(new FillLayout(SWT.VERTICAL));

        final Tree tree = new Tree(shell, SWT.BORDER);
        TreeItem computer = new TreeItem(tree, SWT.NONE);
        computer.setText("我的電腦");
        Image computericon = new Image(shell.getDisplay(),
                "icons//mycomputer.png");// 創(chuàng)建圖像
        computer.setImage(computericon);

        //返回可獲得的文件根目錄,即本地文件系統(tǒng)結(jié)構(gòu)的最頂層(如Windows平臺上的盤符)
        File[] roots = File.listRoots();
        for (int i = 0; i < roots.length; i++) {
            //                TreeItem root = new TreeItem(tree, 0);
            TreeItem root = new TreeItem(computer, 0);
            root.setText(roots[i].toString());
            root.setData(roots[i]);//保存當(dāng)前節(jié)點數(shù)據(jù)
            Image cdicon = new Image(shell.getDisplay(), "icons//系統(tǒng)磁盤.png");// 創(chuàng)建磁盤圖像
            root.setImage(cdicon);
            new TreeItem(root, 0);//把當(dāng)前節(jié)點作為目錄節(jié)點

        }

        tree.addListener(SWT.Expand, new Listener() {
            public void handleEvent(final Event event) {
                final TreeItem root = (TreeItem) event.item;
                TreeItem[] items = root.getItems();
                for (int i = 0; i < items.length; i++) {
                    if (items[i].getData() != null)
                        return;
                    items[i].dispose();
                }
                File file = (File) root.getData();
                File[] files = file.listFiles();//返回File對象(文件夾與文件)的數(shù)組
                //采用文件夾目錄過濾器來判斷當(dāng)前路徑是否為文件夾,返回File對象(文件夾)的數(shù)組
                //File[] files = file.listFiles(new DirFilter());
                // 列出該目錄中的文件名與文件夾名,返回一個文件名數(shù)組
                // String[] filespath=file.list();
                // for (int i = 0; i < filespath.length; i++) {
                // System.out.println("文件為: " + filespath[i]);
                // }

                if (files == null)
                    return;
                for (int i = 0; i < files.length; i++) {
                    //不顯示隱藏文件的路徑

                    //if(files[i].isHidden()==false){//判斷當(dāng)前路徑的文件是否為隱藏文件
                    if ((files[i].isHidden() == false)
                            && (files[i].isFile() == false)) {//判斷當(dāng)前路徑是否為隱藏文件與文件夾
                        TreeItem item = new TreeItem(root, 0);
                        item.setText(files[i].getName());
                        //葉子節(jié)點對應(yīng)的數(shù)值為相應(yīng)文件夾的File對象
                        item.setData(files[i]);
                        Image foldericon = new Image(shell.getDisplay(),
                                "icons//文件夾圖標(biāo).png");// 創(chuàng)建文件夾圖像
                        item.setImage(foldericon);
                        //當(dāng)前為文件目錄而不是文件的時候,添加新項目,以便只是顯示文件夾(包括空文件夾),而不顯示文件夾下的文件
                        if (files[i].isDirectory()) {
                            new TreeItem(item, 0);
                        }
                    }
                }
            }
        });

        //        鼠標(biāo)單擊選擇樹的葉子節(jié)點事件
        final Treetest tr = new Treetest();
        tree.addListener(SWT.MouseDown, new Listener() {
            public void handleEvent(Event event) {
                Point point = new Point(event.x, event.y);
                TreeItem item = tree.getItem(point);
                if ((item != null) && (item.getData() != null)) {
                    System.out.println("您選中的文件夾名是:" + item.getText());
                    File s = (File) item.getData();
                    // 得到本地的缺省格式
                    NumberFormat nf = NumberFormat.getInstance();
                    double fsizebyte = (double) tr.getDirectorySize(s);
                    System.out.println("您選中的文件夾大小是:" + nf.format(fsizebyte)
                            + "字節(jié)");
                    double fsizemb = (double) tr.getDirectorySize(s) / 1024;
                    System.out.println("您選中的文件夾大小是:" + nf.format(fsizemb)
                            + "MB");
                    System.out.println("您選中的文件夾路徑是:" + item.getData());

                }
            }
        });

        //根據(jù)Tree的大小更改shell的大小
        Point size = tree.computeSize(300, SWT.DEFAULT);
        int width = Math.max(300, size.x);
        int height = Math.max(300, size.y);
        shell.setSize(shell.computeSize(width, height));
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

    /**
    * 計算文件夾目錄下文件的整體大小(單位為:字節(jié))
    */
    public long getDirectorySize(File dir) {
        long retSize = 0;//文件夾目錄下文件的大小
        if ((dir == null) || !dir.isDirectory()) {
            return retSize;
        }
        File[] entries = dir.listFiles();
        int count = entries.length;
        for (int i = 0; i < count; i++) {
            if (entries[i].isDirectory()) {
                retSize += getDirectorySize(entries[i]);
            } else {
                retSize += entries[i].length();
            }
        }
        return retSize;
    }

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Swt常用控件中文教程
SWT 和 JFace, 第 2 部分: 簡介
SWT asyncExec adventures. ? Tsoueid's Blog
SWT Designer 安裝與破解
shell對文件或文件夾存在性的判斷
SWT 功能樹簡單實現(xiàn)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服