版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 概述........................................................................................................1</p><p> 1.1資源管理器的簡介........................
2、...........................................1</p><p> 1.2課程設(shè)計的目的.......................................................................1</p><p> 1.3課程設(shè)計的內(nèi)容......................................
3、.................................1</p><p> 2系統(tǒng)需求分析........................................................................................1</p><p> 2.1 系統(tǒng)目標....................................
4、..............................................2</p><p> 2.2 主體功能..................................................................................2</p><p> 2.3 開發(fā)環(huán)境............................
5、......................................................2</p><p> 系統(tǒng)概要設(shè)計........................................................................................3</p><p> 3.1 系統(tǒng)功能模塊劃分............
6、......................................................3</p><p> 3.2系統(tǒng)流程圖...............................................................................3</p><p> 系統(tǒng)詳細設(shè)計.........................
7、...............................................................4</p><p> 測試.......................................................................................................10</p><p> 5.1
8、 測試結(jié)果.................................................................................10</p><p> 參考文獻...............................................................................................13</p&g
9、t;<p> 7.附錄源程序清單...................................................................................13</p><p><b> 1 概述:</b></p><p> 1.1 資源管理器的簡介:</p><p> 資源管理器
10、是Windows提供的資源管理工具,我們可以用 它查看電腦的所有資源,特別是它提供的樹形的文件系統(tǒng)結(jié)構(gòu),使我們能更直觀地認識電腦的文件和文件夾。在實際的使用功能上“資源管理器”和”我的電腦”沒什么不一樣,兩者都是用來管理系統(tǒng)資源的,也可以說是用來管理文件的。另外在資源管理器中還可以實現(xiàn)對文件的操作,如:文件的刪除、文件的重命名、文件的新建、文件的復(fù)制、查看文件的屬性等。</p><p>
11、 1.2 課程設(shè)計的目的:</p><p> 通過本次的課程設(shè)計,使我們能夠更加熟練的運用java的相關(guān)知識,能夠使用GUI圖形用戶界面把我們編程的思想用圖形的形式展現(xiàn)出來,同時開拓我們的眼界,拓寬我們的思維,讓思想碰撞出火花,使不可能變成可能。</p><p> 1.3 課程設(shè)計的內(nèi)容:</p><p> 實現(xiàn)一個類似于資源管理器的仿資源管理器,要求能以樹形
12、的形式將目錄及文件展現(xiàn)出來,能彈出右鍵菜單,且要求能實現(xiàn)文件的刪除、文件的重命名、及查看文件的屬性等功能。</p><p><b> 2 系統(tǒng)需求分析:</b></p><p><b> 2.1 系統(tǒng)目標:</b></p><p> 可以正常運行程序,并按照設(shè)計目的的預(yù)想完成程序的功能。</p><
13、;p><b> 2.2 主體功能:</b></p><p> (1) 設(shè)計GUI的界面,整個界面只有一個樹形的文件及目錄樹,出現(xiàn)在界面的左邊。用鼠標選中該樹的某一個節(jié)點,左擊可以是節(jié)點進行收縮和展開,左擊兩次還可以進行文件的重命名,如果左擊多次,對于可運行文件可以運行該文件。右擊可以彈出菜單;</p><p> (2) 文件夾及文件的刪除:對于文件通過文件
14、的刪除方法進行刪除,對于文件夾通過先刪除文件夾里面的所有文件再刪除文件夾,這里使用了遞歸刪除的方法;</p><p> (3) 文件的重命名:文件的重命名主要是用到了克隆的方法,即先生成一個克隆節(jié)點,使其于要刪除的節(jié)點具有相同的引用,更新克隆節(jié)點的文件名,在刪掉選中節(jié)點,再生成克隆的文件節(jié)點,在將其插入;</p><p> (4) 文件的屬性:通過文件類提供的各種方法獲取文件的屬性,將
15、其在屬性框中展現(xiàn)出來,包括是否可讀,是否可寫,修改時間是否隱藏等;</p><p> (5)文件夾及文件的復(fù)制:主要是通過IO流來實現(xiàn)的,而對于文件夾則是通過遞歸的復(fù)制文件夾里面的所有文件在復(fù)制文件夾的;</p><p> (6)文件的新建:主要是獲取文件的路徑,在以此進行文件的新建,在將其添加到樹上;</p><p><b> 2.3開發(fā)環(huán)境:&l
16、t;/b></p><p> Eclipse 運行平臺進行開發(fā)的;</p><p><b> 3 系統(tǒng)概要設(shè)計:</b></p><p> 3.1 系統(tǒng)的功能模塊劃分:</p><p> (1)NodeDate.java類:主要用于創(chuàng)建文件節(jié)點類,包括兩個成員變量,一個是文件對象,一個是文件的名稱;<
17、/p><p> (2) FolderRendere.java類:主要是用于繪制節(jié)點的,即用于繪制節(jié)點的圖標等;</p><p> (3) MyTree.java類:主要是窗口的設(shè)置,還有鼠標偵聽器、樹模型偵聽器、菜單中的文件復(fù)制、文件刪除、文件重命名、文件新建、文件屬性的動作偵聽器的各種實現(xiàn)方法; </p><p> 3.2 系統(tǒng)流程圖;</p>
18、<p><b> 系統(tǒng)詳細設(shè)計:</b></p><p> (1) 樹模型偵聽器:</p><p> model.addTreeModelListener(new TreeModelListener()</p><p><b> {</b></p><p> public voi
19、d treeNodesChanged(TreeModelEvent e)//當(dāng)樹的節(jié)點改變時就調(diào)用這個方法</p><p><b> {</b></p><p> //獲得編輯后的節(jié)點的父節(jié)點</p><p> DefaultMutableTreeNode parent = (DefaultMutableTreeNode)(e.getTr
20、eePath().getLastPathComponent());//返回從根節(jié)點到該節(jié)點的路徑,在找到樹種最后一個選中的節(jié)點</p><p> DefaultMutableTreeNode node;</p><p><b> try </b></p><p><b> {</b></p><p
21、> int []index = e.getChildIndices();//返回目前修改節(jié)點的索引值</p><p> node = (DefaultMutableTreeNode)(parent.getChildAt(index[0]));//getChildAt()方法取得修改的節(jié)點對象.</p><p> //System.out.println(aClone.toStr
22、ing());</p><p> //克隆體更新名稱,file不變</p><p> ((NodeData)aClone.getUserObject()).ChangeString(node.toString());</p><p> //刪除選定節(jié)點且要求該節(jié)點存在父節(jié)點</p><p> model.removeNodeFromP
23、arent(node);</p><p><b> //添加克隆體</b></p><p> model.insertNodeInto(aClone,parent,index[0]);//在父節(jié)點的子節(jié)點中的 index 處插入aClone</p><p><b> } </b></p><p&g
24、t; catch (NullPointerException exc) //點選的節(jié)點為root node,則getChildIndices()的返回值為null,root node產(chǎn)生的NullPointerException問題.</p><p><b> {</b></p><p> System.out.println("model error
25、");</p><p><b> }</b></p><p><b> //系統(tǒng)實現(xiàn)改名</b></p><p> NodeData data = (NodeData) aClone.getUserObject();</p><p> String tt = data.f.getP
26、arent() + "//";</p><p> tt = tt + aClone.toString();</p><p> File newfile = new File(tt);</p><p> data.f.renameTo(newfile);//將文件改名為 指定的名字 </p><p> data.f
27、= newfile;</p><p><b> return;</b></p><p><b> }</b></p><p> public void treeStructureChanged(TreeModelEvent e){} //當(dāng)樹的結(jié)構(gòu)改變時就調(diào)用這個方法</p><p
28、> public void treeNodesRemoved(TreeModelEvent e){} // 當(dāng)屬的節(jié)點刪除時就調(diào)用這個方法</p><p> public void treeNodesInserted(TreeModelEvent e){} //當(dāng)樹的節(jié)點添加時就調(diào)用這個方法 </p><p><b> });</b&
29、gt;</p><p><b> (2)屬性偵聽器:</b></p><p> natrueItem.addActionListener(new ActionListener()//屬性功能</p><p><b> { //屬性功能</b></p><p> public void ac
30、tionPerformed(ActionEvent event){ </p><p> JDialog subDialog;</p><p> subDialog=new JDialog(jf,"屬性");</p><p> subDialog.setVisible(true);</p><p> subDialo
31、g.setSize(400,400);</p><p> JTextArea text=new JTextArea();</p><p> subDialog.getContentPane().add(text); </p><p> TreePath tp=tree.getSelectionPath();//得到樹狀視圖的被選擇節(jié)點路徑</p>
32、<p> String fullPath="";//得到被選擇節(jié)點對應(yīng)文件的完整路徑信息</p><p> for(Object obj:tp.getPath())</p><p><b> {</b></p><p> String str=obj.toString();</p><
33、;p> if(str.endsWith("\\"))//處理盤符根目錄問題</p><p> str=str.substring(0,str.length()-1);</p><p> if(fullPath.equals(""))</p><p> fullPath+=str;</p><p
34、><b> else </b></p><p> fullPath+="\\"+str;</p><p><b> }</b></p><p> int n=fullPath.indexOf("腦");</p><p> String
35、sp=fullPath.substring(n+2);</p><p> File currentFile=new File(sp);</p><p> StringBuffer sb=new StringBuffer();</p><p> if(currentFile.isDirectory())</p><p> sb.appe
36、nd("文件夾路徑:"+currentFile.getAbsolutePath()+"\n");</p><p><b> else</b></p><p> sb.append("文件路徑:"+currentFile.getAbsolutePath()+"\n");</p>
37、;<p> sb.append("是否可讀"+currentFile.canRead()+"\n");</p><p> sb.append("是否可寫"+currentFile.canWrite()+"\n");</p><p> if(!currentFile.isDirectory()
38、)</p><p> sb.append("文件的長度:"+currentFile.length()/(1024*1024)+"M\n");</p><p> SimpleDateFormat s=new SimpleDateFormat("yyyy年MM年dd日HH 小時mm分鐘ss秒); sb.append("文件上次修改
39、的時間:"+s.format(new Date(currentFile.lastModified()))+"\n");</p><p> sb.append("文件是否被隱藏:"+currentFile.isHidden()+"\n");</p><p> text.setText(sb.toString());&l
40、t;/p><p> } </p><p><b> });</b></p><p><b> 刪除偵聽器:</b></p><p> deleteItem.addActionListener(new ActionListener()</p>
41、<p><b> {</b></p><p> public void actionPerformed(ActionEvent event)</p><p><b> {</b></p><p> DefaultMutableTreeNode selectedNode = (DefaultMutabl
42、eTreeNode) tree.getLastSelectedPathComponent();</p><p> if(selectedNode == null)</p><p><b> return;</b></p><p><b> //獲得節(jié)點數(shù)據(jù)</b></p><p> Node
43、Data data = (NodeData) selectedNode.getUserObject();</p><p> //顯示是否刪除的確認對話</p><p> int n = JOptionPane.showConfirmDialog(tree,"確認刪除嗎?","確認對話框",JOptionPane.YES_NO_OPTION);&l
44、t;/p><p> if(n == JOptionPane.NO_OPTION)</p><p><b> return;</b></p><p> //如果該節(jié)點是文件</p><p> if(selectedNode == root)</p><p><b> {</b&
45、gt;</p><p> JOptionPane.showMessageDialog(tree,"本地磁盤不能被刪除","警告對話框",JOptionPane.WARNING_MESSAGE);</p><p><b> return;</b></p><p><b> }</b&g
46、t;</p><p> else if(data.f.isFile())</p><p><b> {</b></p><p><b> //刪除文件</b></p><p> delFile(data.f.getAbsolutePath());</p><p>&l
47、t;b> }</b></p><p> else if(data.f.isDirectory())</p><p><b> {</b></p><p><b> //刪除文件夾</b></p><p> if(selectedNode.getParent() != ro
48、ot)</p><p> delFolder(data.f.getAbsolutePath());</p><p><b> else </b></p><p><b> {</b></p><p> JOptionPane.showMessageDialog(tree,"本地磁盤
49、不能被刪除","警告對話框",JOptionPane.WARNING_MESSAGE);</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p> //處
50、理樹節(jié)點的刪除</p><p> model.removeNodeFromParent(selectedNode);</p><p><b> }</b></p><p><b> });</b></p><p><b> ?。?)復(fù)制偵聽器:</b></p>
51、<p> copyItem.addActionListener(new ActionListener()</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent event)</p><p><b> {</b></
52、p><p><b> //獲取選中節(jié)點</b></p><p> DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();</p><p> if(selectedNode == null)</p
53、><p><b> return;</b></p><p><b> //獲得節(jié)點數(shù)據(jù)</b></p><p> NodeData data = (NodeData) selectedNode.getUserObject();</p><p> if(selectedNode == root){
54、</p><p><b> return;</b></p><p><b> }</b></p><p> else if(data.f.isFile())</p><p> { copyfile(date.f.getAbsolutePath(),"C:\新建文件夾&quo
55、t;;}</p><p> else if(data.f.isDirectory())</p><p> { //刪除文件夾</p><p> if(selectedNode.getParent() != root)</p><p> copyDict(date.f.getAbsolutePath(),"C:\&qu
56、ot;);</p><p><b> else</b></p><p> {return;} </p><p><b> }</b></p><p> ?。?)重命名偵聽器:</p><p> renameItem.addActionListener(new Act
57、ionListener()</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent event)</p><p><b> {</b></p><p><b> //設(shè)置可編輯</b>&l
58、t;/p><p> tree.setEditable(true);</p><p><b> //獲取選中節(jié)點</b></p><p> DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();<
59、/p><p> TreePath editPath = tree.getSelectionPath();//得到被選擇節(jié)點的路徑</p><p> if(selectedNode == null)</p><p><b> return;</b></p><p><b> //開始編輯</b>&
60、lt;/p><p> tree.startEditingAtPath(editPath);//選擇路徑中的最后一個項并試著編輯它</p><p> //,修改節(jié)點監(jiān)控器,保存節(jié)點新名字</p><p> aClone = (DefaultMutableTreeNode) selectedNode.clone();</p><p> //測
61、試----正確克隆</p><p> //System.out.println(aClone.toString());</p><p><b> }</b></p><p><b> });</b></p><p><b> (6)新建偵聽器:</b></p>
62、;<p> newFileItem.addActionListener(new ActionListener() //新建功能</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent event)</p><p><b&
63、gt; {</b></p><p> TreePath path=tree.getSelectionPath();</p><p> MutableTreeNode node=(MutableTreeNode) path.getLastPathComponent();</p><p> DefaultTreeModel model=( Defau
64、ltTreeModel) tree.getModel();</p><p> MutableTreeNode newNode=new DefaultMutableTreeNode("ghg");</p><p> tree.fireTreeExpanded(path);</p><p> if(node.getAllowsChildren(
65、))</p><p> model.insertNodeInto(newNode,node,0);</p><p><b> else{</b></p><p><b> return;</b></p><p><b> }</b></p><p&g
66、t; String fullPath="";</p><p> for(Object obj:path.getPath())</p><p><b> {</b></p><p> String str=obj.toString();</p><p> if(str.endsWith(&qu
67、ot;\\"))//處理盤符根目錄問題</p><p> str=str.substring(0,str.length()-1);</p><p> if(fullPath.equals(""))</p><p> fullPath+=str;</p><p><b> else</b&g
68、t;</p><p> fullPath+="\\"+str;</p><p><b> }</b></p><p> int n=fullPath.indexOf("腦");</p><p> String op=fullPath.substring(n+2);</
69、p><p> // File currentFile=new File(op);</p><p> File parentDir=new File(op);</p><p> if(parentDir.isDirectory())</p><p><b> {</b></p><p> Fi
70、le currentFile1=new File(op+"\\"+"ghg");</p><p> currentFile1.mkdir();</p><p><b> }</b></p><p><b> }</b></p><p><b>
71、 });</b></p><p><b> 5 測試:</b></p><p><b> 5.1 測試結(jié)果:</b></p><p><b> 參考文獻:</b></p><p> [1]. Java開發(fā)技術(shù)大全,清華大學(xué)出版社,劉新著;</p>
72、;<p> [2].Java大學(xué)實用教程(第三版) 電子工業(yè)出版社,耿祥義、張躍平、 編著;</p><p><b> 附錄源程序清單:</b></p><p> package 仿資源管理器;</p><p> import javax.swing.*;</p><p> import java
73、x.swing.tree.*;</p><p> import java.awt.event.*;</p><p> import java.awt.*;</p><p> import javax.swing.event.*;</p><p> import java.io.*;</p><p> impo
74、rt java.io.File.*;</p><p> import javax.swing.JOptionPane;</p><p> import javax.swing.filechooser.FileSystemView;</p><p> import java.sql.Date;</p><p> import java.
75、text.SimpleDateFormat;</p><p> @SuppressWarnings("unused")</p><p> public class MyTree </p><p><b> {</b></p><p> JFrame jf;</p><p&g
76、t; JTree tree;</p><p> DefaultTreeModel model;//聲明樹狀視圖模型</p><p> PopupMenu pop = new PopupMenu();//右鍵菜單</p><p> MenuItem deleteItem = new MenuItem("刪除");</p>&l
77、t;p> MenuItem renameItem = new MenuItem("重命名");</p><p> MenuItem natrueItem = new MenuItem("屬性");</p><p> MenuItem newFileItem=new MenuItem("新建");</p>
78、<p> MenuItem copyItem=new MenuItem("復(fù)制");</p><p> DefaultMutableTreeNode root = new DefaultMutableTreeNode(new NodeData(null,"我的電腦")); </p><p> //用于重命名時生成一個原節(jié)點的克隆體&l
79、t;/p><p> DefaultMutableTreeNode aClone;</p><p> public void init()</p><p><b> {</b></p><p> jf = new JFrame("仿資源管理器");</p><p> Fil
80、e[] roots = File.listRoots();//獲得系統(tǒng)根目錄文件</p><p> for(int i = 0;i < roots.length;i ++)</p><p><b> {</b></p><p> DefaultMutableTreeNode node = new DefaultMutableTree
81、Node(new NodeData(roots[i],roots[i].getAbsolutePath()));</p><p> root.add(node);</p><p><b> }</b></p><p> tree = new JTree(root);</p><p> model = (Defau
82、ltTreeModel) tree.getModel();//獲取Jtree對應(yīng)的TreeModel的對象,即獲取樹的數(shù)據(jù)模型</p><p> tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);//一次只能選中一個節(jié)點先返回樹的選擇模型在設(shè)置樹的選擇模型</p><p>
83、; tree.setCellRenderer(new FolderRenderer());//設(shè)置使用定制的節(jié)點繪制器</p><p> //e.path() 返回已更改節(jié)點的父節(jié)點的路徑。</p><p> //e.childIndices() 返回更改節(jié)點的索引。</p><p> //當(dāng)用戶完成一個節(jié)點的編輯時,這個 model 產(chǎn)生一個 tree m
84、odel 事件,它會告訴所有監(jiān)聽者(包括 Jtree ):樹節(jié)點被改變了。注意:盡管 DefaultMutableTreeNode 擁有改變一個節(jié)點內(nèi)容的方法,但是改變還是需要通過 DefaultTreeModel 上面的方法。否則, tree model 事件就不能產(chǎn)生,事件的監(jiān)聽者(例如 tree )就不能知道這些更新。 </p><p> //為了通知“節(jié)點改變”,我們可以實現(xiàn)一個 TreeModelLi
85、stener 。這里有一個關(guān)于 tree model 監(jiān)聽器的例子,當(dāng)用戶為一個樹節(jié)點輸入一個新名字時,事件會被檢測到。 </p><p> model.addTreeModelListener(new TreeModelListener()</p><p><b> {</b></p><p> public void treeNode
86、sChanged(TreeModelEvent e)//當(dāng)樹的節(jié)點改變時就調(diào)用這個方法</p><p><b> {</b></p><p> //獲得編輯后的節(jié)點的父節(jié)點</p><p> DefaultMutableTreeNode parent = (DefaultMutableTreeNode)(e.getTreePath().g
87、etLastPathComponent());//返回從根節(jié)點到該節(jié)點的路徑,在找到樹種最后一個選中的節(jié)點</p><p> DefaultMutableTreeNode node;</p><p><b> try </b></p><p><b> {</b></p><p> int
88、[]index = e.getChildIndices();//返回目前修改節(jié)點的索引值</p><p> node = (DefaultMutableTreeNode)(parent.getChildAt(index[0]));//getChildAt()方法取得修改的節(jié)點對象.</p><p> //System.out.println(aClone.toString());<
89、;/p><p> //克隆體更新名稱,file不變</p><p> ((NodeData)aClone.getUserObject()).ChangeString(node.toString());</p><p> //刪除選定節(jié)點且要求該節(jié)點存在父節(jié)點</p><p> model.removeNodeFromParent(node
90、);</p><p><b> //添加克隆體</b></p><p> model.insertNodeInto(aClone,parent,index[0]);//在父節(jié)點的子節(jié)點中的 index 處插入aClone</p><p><b> } </b></p><p> catch
91、(NullPointerException exc) //點選的節(jié)點為root node,則getChildIndices()的返回值為null,root node產(chǎn)生的NullPointerException問題.</p><p><b> {</b></p><p> System.out.println("model error");&l
92、t;/p><p><b> }</b></p><p><b> //系統(tǒng)實現(xiàn)改名</b></p><p> NodeData data = (NodeData) aClone.getUserObject();</p><p> String tt = data.f.getParent() +
93、"//";</p><p> tt = tt + aClone.toString();</p><p> File newfile = new File(tt);</p><p> data.f.renameTo(newfile);//將文件改名為 指定的名字 </p><p> data.f = newfile;
94、</p><p><b> return;</b></p><p><b> }</b></p><p> public void treeStructureChanged(TreeModelEvent e){} //當(dāng)樹的結(jié)構(gòu)改變時就調(diào)用這個方法</p><p> publ
95、ic void treeNodesRemoved(TreeModelEvent e){} // 當(dāng)屬的節(jié)點刪除時就調(diào)用這個方法</p><p> public void treeNodesInserted(TreeModelEvent e){} //當(dāng)樹的節(jié)點添加時就調(diào)用這個方法 </p><p><b> });</b></p&
96、gt;<p> //為pop添加菜單項</p><p> pop.add(deleteItem);</p><p> pop.addSeparator();</p><p> pop.add(renameItem);</p><p> pop.addSeparator();</p><p>
97、pop.add(natrueItem);</p><p> pop.addSeparator();</p><p> pop.add(newFileItem);</p><p> pop.addSeparator();</p><p> pop.add(copyItem);</p><p> newFileI
98、tem.addActionListener(new ActionListener() //新建功能</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent event)</p><p><b> {</b></p
99、><p> TreePath path=tree.getSelectionPath();</p><p> MutableTreeNode node=(MutableTreeNode) path.getLastPathComponent();</p><p> DefaultTreeModel model=( DefaultTreeModel) tree.getM
100、odel();</p><p> MutableTreeNode newNode=new DefaultMutableTreeNode("ghg");</p><p> tree.fireTreeExpanded(path);</p><p> if(node.getAllowsChildren())</p><p>
101、; model.insertNodeInto(newNode,node,0);</p><p><b> else{</b></p><p><b> return;</b></p><p><b> }</b></p><p> String fullPath=&q
102、uot;";</p><p> for(Object obj:path.getPath())</p><p><b> {</b></p><p> String str=obj.toString();</p><p> if(str.endsWith("\\"))//處理盤符根目錄
103、問題</p><p> str=str.substring(0,str.length()-1);</p><p> if(fullPath.equals(""))</p><p> fullPath+=str;</p><p><b> else</b></p><p>
104、; fullPath+="\\"+str;</p><p><b> }</b></p><p> int n=fullPath.indexOf("腦");</p><p> String op=fullPath.substring(n+2);</p><p> // F
105、ile currentFile=new File(op);</p><p> File parentDir=new File(op);</p><p> if(parentDir.isDirectory())</p><p><b> {</b></p><p> File currentFile1=new Fi
106、le(op+"\\"+"ghg");</p><p> currentFile1.mkdir();</p><p><b> }</b></p><p><b> }</b></p><p><b> });</b></p&
107、gt;<p> natrueItem.addActionListener(new ActionListener()//屬性功能</p><p> { //屬性功能</p><p> public void actionPerformed(ActionEvent event){ </p><p> JDialog su
108、bDialog;</p><p> subDialog=new JDialog(jf,"屬性");</p><p> subDialog.setVisible(true);</p><p> subDialog.setSize(400,400);</p><p> JTextArea text=new JTextA
109、rea();</p><p> subDialog.getContentPane().add(text); </p><p> TreePath tp=tree.getSelectionPath();//得到樹狀視圖的被選擇節(jié)點路徑</p><p> String fullPath="";//得到被選擇節(jié)點對應(yīng)文件的完整路徑信息</
110、p><p> for(Object obj:tp.getPath())</p><p><b> {</b></p><p> String str=obj.toString();</p><p> if(str.endsWith("\\"))//處理盤符根目錄問題</p><
111、p> str=str.substring(0,str.length()-1);</p><p> if(fullPath.equals(""))</p><p> fullPath+=str;</p><p><b> else </b></p><p> fullPath+=
112、"\\"+str;</p><p><b> }</b></p><p> int n=fullPath.indexOf("腦");</p><p> String sp=fullPath.substring(n+2);</p><p> File currentFile=
113、new File(sp);</p><p> StringBuffer sb=new StringBuffer();</p><p> if(currentFile.isDirectory())</p><p> sb.append("文件夾路徑:"+currentFile.getAbsolutePath()+"\n")
114、;</p><p><b> else</b></p><p> sb.append("文件路徑:"+currentFile.getAbsolutePath()+"\n");</p><p> sb.append("是否可讀"+currentFile.canRead()+&quo
115、t;\n");</p><p> sb.append("是否可寫"+currentFile.canWrite()+"\n");</p><p> if(!currentFile.isDirectory())</p><p> sb.append("文件的長度:"+currentFile.le
116、ngth()/(1024*1024)+"M\n");</p><p> SimpleDateFormat s=new SimpleDateFormat("yyyy年MM年dd日HH小時mm分鐘ss秒");</p><p> sb.append("文件上次修改的時間:"+s.format(new Date(currentFile
117、.lastModified()))+"\n");</p><p> sb.append("文件是否被隱藏:"+currentFile.isHidden()+"\n");</p><p> text.setText(sb.toString());</p><p> }
118、 </p><p><b> });</b></p><p> //菜單項deleteItem的動作偵聽器</p><p> deleteItem.addActionListener(new ActionListener()</p><p><b> {</b></p>
119、<p> public void actionPerformed(ActionEvent event)</p><p><b> {</b></p><p><b> //獲取選中節(jié)點</b></p><p> DefaultMutableTreeNode selectedNode = (Default
120、MutableTreeNode) tree.getLastSelectedPathComponent();</p><p> if(selectedNode == null)</p><p><b> return;</b></p><p><b> //獲得節(jié)點數(shù)據(jù)</b></p><p>
121、 NodeData data = (NodeData) selectedNode.getUserObject();</p><p> //顯示是否刪除的確認對話框</p><p> int n = JOptionPane.showConfirmDialog(tree,"確認刪除嗎?","確認對話框",JOptionPane.YES_NO_OPT
122、ION);</p><p> if(n == JOptionPane.NO_OPTION)</p><p><b> return;</b></p><p> //如果該節(jié)點是文件</p><p> if(selectedNode == root)</p><p><b> {
123、</b></p><p> JOptionPane.showMessageDialog(tree,"本地磁盤不能被刪除","警告對話框",JOptionPane.WARNING_MESSAGE);</p><p><b> return;</b></p><p><b> }&
124、lt;/b></p><p> else if(data.f.isFile())</p><p><b> {</b></p><p><b> //刪除文件</b></p><p> delFile(data.f.getAbsolutePath());</p><
125、p><b> }</b></p><p> else if(data.f.isDirectory())</p><p><b> {</b></p><p><b> //刪除文件夾</b></p><p> if(selectedNode.getParent(
126、) != root)</p><p> delFolder(data.f.getAbsolutePath());</p><p><b> else </b></p><p><b> {</b></p><p> JOptionPane.showMessageDialog(tree,&qu
127、ot;本地磁盤不能被刪除","警告對話框",JOptionPane.WARNING_MESSAGE);</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p&g
128、t; //處理樹節(jié)點的刪除</p><p> model.removeNodeFromParent(selectedNode);</p><p><b> }</b></p><p><b> });</b></p><p> //復(fù)制菜單項的copyItem的動作監(jiān)控器</p>
129、;<p> /* copyItem.addActionListener(new ActionListener()</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent event)</p><p><b> {</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計--windows資源管理器與任務(wù)管理器
- 操作系統(tǒng)課程設(shè)計報告---文件資源管理器
- 操作系統(tǒng)課程設(shè)計---windows系統(tǒng)資源管理器與任務(wù)管理器
- 操作系統(tǒng)課程設(shè)計報告---windows系統(tǒng)資源管理器與任務(wù)管理器
- 基于android平臺的資源管理器設(shè)計.pdf
- 基于android平臺資源管理器
- 設(shè)備管理器java課程設(shè)計
- 《資源管理器──文件夾的管理》的總體教學(xué)設(shè)計
- 桌面Linux資源管理器研究和改進.pdf
- GPIB-VXI零槽資源管理器研究.pdf
- 1394-VXI零槽資源管理器的硬件設(shè)計.pdf
- 云計算平臺中云資源管理器的設(shè)計與實現(xiàn).pdf
- 面向中小企業(yè)的資源管理器的研究.pdf
- 自動交換光網(wǎng)絡(luò)鏈路資源管理器研究.pdf
- 功能較完善的文件管理器java課程設(shè)計報告
- 進程管理器課程設(shè)計
- 異構(gòu)無線網(wǎng)絡(luò)中基于認知的頻譜資源管理器的設(shè)計與實現(xiàn).pdf
- java課程設(shè)計---java計算器
- 人力資源管理系統(tǒng)課程設(shè)計
- 人力資源管理課程設(shè)計
評論
0/150
提交評論