*使用SWT實現的系統資料夾目錄的顯示,* * */
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 {
//類似資源管理器的樹,其中包含滑鼠雙擊事件
public static void main(String[] ARGs) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("系統資料夾目錄的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");// 創建圖像
computer.setImage(computericon);
//返回可獲得的檔案根目錄,即本地檔案系統結構的最頂層(如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.toString());
root.setData(roots);//保存當前節點數據
Image cdicon = new Image(shell.getDisplay(), "icons//系統磁碟.png");// 創建磁碟圖像
root.setImage(cdicon);
new TreeItem(root, 0);//把當前節點作為目錄節點
}
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.getData() != null)
return;
items.dispose();
}
File file = (File) root.getData();
File[] files = file.listFiles();//返回File對象(資料夾或檔案)的數組
//採用資料夾目錄過濾器來判斷當前路徑是否為資料夾,返回File對象(資料夾)的數組
//File[] files = file.listFiles(new DirFilter());
// 列出該目錄中的檔案名稱與資料夾名,返回一個檔案名稱數組
// String[] filespath=file.list();
// for (int i = 0; i < filespath.length; i++) {
// System.out.println("檔案為: " + filespath);
// }
if (files == null)
return;
for (int i = 0; i < files.length; i++) {
//不顯示隱藏檔案的路徑
//if(files.isHidden()==false){//判斷當前路徑的檔案是否為隱藏檔案
if ((files.isHidden() == false)
&& (files.isFile() == false)) {//判斷當前路徑是否為隱藏檔案與資料夾
TreeItem item = new TreeItem(root, 0);
item.setText(files.getName());
//葉子節點對應的數值為相應資料夾的File對象
item.setData(files);
Image foldericon = new Image(shell.getDisplay(),
"icons//資料夾圖示.png");// 創建資料夾圖像
item.setImage(foldericon);
//當前為檔案目錄而不是檔案的時候,添加新項目,以便只是顯示資料夾(包括空資料夾),而不顯示資料夾下的檔案
if (files.isDirectory()) {
new TreeItem(item, 0);
}
}
}
}
});
// 滑鼠單擊選擇樹的葉子節點事件
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)
+ "位元組");
double fsizemb = (double) tr.getDirectorySize(s) / 1024;
System.out.println("您選中的資料夾大小是:" + nf.format(fsizemb)
+ "MB");
System.out.println("您選中的資料夾路徑是:" + item.getData());
}
}
});
//根據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();
}
/**
* 計算資料夾目錄下檔案的整體大小(單位為:位元組)
*/
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.isDirectory()) {
retSize += getDirectorySize(entries);
} else {
retSize += entries.length();
}
}
return retSize;
}
}
相關詞條
-
資源管理器
視窗和資料夾內容視窗。左邊的資料夾視窗以樹形目錄的形式顯示資料夾,右邊...,我們可以用它查看本台電腦的所有資源,特別是它提供的樹形的檔案系統結構,使我們能更清楚、更直觀地認識電腦的檔案和資料夾,這是“我的電腦”所沒有...
簡介 界面 使用方法 實用功能 參數管理 -
winrar
* 例外掩碼,而且當前資料夾的名稱含有“somefolder”時...一個磁碟一個卷。您需要在相同的資料夾內創建所有卷。 已在 ZIP 歸檔...
基本介紹 版本信息 軟體介紹 分卷壓縮 優勢特點 -
網易網盤
的好友. 如何新建資料夾?· 登錄126免費郵,點擊左邊樹形選單中...一個(只需要花一分鐘時間即可註冊成功) 點擊左邊樹形選單中的“網易網盤...資料夾自由分類,網盤關鍵字搜尋,讓您更方便管理查找檔案。[1]網盤擴容 網易...
網易網盤 網盤性能 網盤擴容 使用方法 說明 -
VisualC++編程技巧精選500例
《VisualC++編程技巧精選500例》是由羅斌等編著的計算機套用技術類書籍;該書由水利水電出版社於2005年出版發行。在本書中不僅給出了關鍵性的代碼...
版權資訊 目錄 -
autorun.inf
手動打開資料夾找到安裝檔案,然後雙擊安裝軟體。不過,在連線至計算機時...資料夾 那么在右鍵選單顯示的就是"打開資料夾",而執行的命令就是...個空的資料夾,命名為autorun.inf。如果你的隨身碟無法完成重命名...
發布補丁 詳解格式 鑑別方法 應對策略 命令簡介 -
組策略
)在組策略對象編輯器窗格左側的樹形圖中依次展開“用戶配置→管理模板→系統...編輯器窗格左側的樹形圖中依次展開“計算機配置→管理模板→系統→系統還原...組策略對象編輯器。(2)在組策略對象編輯器窗格左側的樹形圖中依次展開...
啟動方式 系統設定 解決方法 常用命令 -
ExcelVBA開發技術大全
內容簡介ExcelVBA開發技術大全Excel2007與以前版本相比,從操作界面到對象模型的變化都很大,例如,取消了選單和工具列...
內容簡介 作者簡介 編輯推薦 目錄 -
小說下載閱讀器
是工具按鈕。工具按鈕下左面為樹形導航--小說列表:右邊分上下欄,上面顯示...、字數、資料夾大小。【打開小說存放資料夾】:打開下載下來小說的所在目錄...以前下載的小說】:可選擇導入以前下載的小說。【導入本地資料夾】:可將本地...
使用說明 軟體功能 參數設定 新增章節 我的書櫃 -
LabVIEW 實用工具詳解
基本信息欄書名: LabVIEW實用工具詳解 作者: 陳樹學 ISBN: 9787121240126 類別: 軟體工程/開發項目...
基本信息欄 前言 內容介紹 讀者對象 本書特色