版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 概述........................................................................................................1</p><p> 1.1資源管理器的簡介........................
2、...........................................1</p><p> 1.2課程設(shè)計(jì)的目的.......................................................................1</p><p> 1.3課程設(shè)計(jì)的內(nèi)容......................................
3、.................................1</p><p> 2系統(tǒng)需求分析........................................................................................1</p><p> 2.1 系統(tǒng)目標(biāo)....................................
4、..............................................2</p><p> 2.2 主體功能..................................................................................2</p><p> 2.3 開發(fā)環(huán)境............................
5、......................................................2</p><p> 系統(tǒng)概要設(shè)計(jì)........................................................................................3</p><p> 3.1 系統(tǒng)功能模塊劃分............
6、......................................................3</p><p> 3.2系統(tǒng)流程圖...............................................................................3</p><p> 系統(tǒng)詳細(xì)設(shè)計(jì).........................
7、...............................................................4</p><p> 測試.......................................................................................................10</p><p> 5.1
8、 測試結(jié)果.................................................................................10</p><p> 參考文獻(xiàn)...............................................................................................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),使我們能更直觀地認(rèn)識電腦的文件和文件夾。在實(shí)際的使用功能上“資源管理器”和”我的電腦”沒什么不一樣,兩者都是用來管理系統(tǒng)資源的,也可以說是用來管理文件的。另外在資源管理器中還可以實(shí)現(xiàn)對文件的操作,如:文件的刪除、文件的重命名、文件的新建、文件的復(fù)制、查看文件的屬性等。</p><p>
11、 1.2 課程設(shè)計(jì)的目的:</p><p> 通過本次的課程設(shè)計(jì),使我們能夠更加熟練的運(yùn)用java的相關(guān)知識,能夠使用GUI圖形用戶界面把我們編程的思想用圖形的形式展現(xiàn)出來,同時(shí)開拓我們的眼界,拓寬我們的思維,讓思想碰撞出火花,使不可能變成可能。</p><p> 1.3 課程設(shè)計(jì)的內(nèi)容:</p><p> 實(shí)現(xiàn)一個(gè)類似于資源管理器的仿資源管理器,要求能以樹形
12、的形式將目錄及文件展現(xiàn)出來,能彈出右鍵菜單,且要求能實(shí)現(xiàn)文件的刪除、文件的重命名、及查看文件的屬性等功能。</p><p><b> 2 系統(tǒng)需求分析:</b></p><p><b> 2.1 系統(tǒng)目標(biāo):</b></p><p> 可以正常運(yùn)行程序,并按照設(shè)計(jì)目的的預(yù)想完成程序的功能。</p><
13、;p><b> 2.2 主體功能:</b></p><p> (1) 設(shè)計(jì)GUI的界面,整個(gè)界面只有一個(gè)樹形的文件及目錄樹,出現(xiàn)在界面的左邊。用鼠標(biāo)選中該樹的某一個(gè)節(jié)點(diǎn),左擊可以是節(jié)點(diǎn)進(jìn)行收縮和展開,左擊兩次還可以進(jìn)行文件的重命名,如果左擊多次,對于可運(yùn)行文件可以運(yùn)行該文件。右擊可以彈出菜單;</p><p> (2) 文件夾及文件的刪除:對于文件通過文件
14、的刪除方法進(jìn)行刪除,對于文件夾通過先刪除文件夾里面的所有文件再刪除文件夾,這里使用了遞歸刪除的方法;</p><p> (3) 文件的重命名:文件的重命名主要是用到了克隆的方法,即先生成一個(gè)克隆節(jié)點(diǎn),使其于要?jiǎng)h除的節(jié)點(diǎn)具有相同的引用,更新克隆節(jié)點(diǎn)的文件名,在刪掉選中節(jié)點(diǎn),再生成克隆的文件節(jié)點(diǎn),在將其插入;</p><p> (4) 文件的屬性:通過文件類提供的各種方法獲取文件的屬性,將
15、其在屬性框中展現(xiàn)出來,包括是否可讀,是否可寫,修改時(shí)間是否隱藏等;</p><p> (5)文件夾及文件的復(fù)制:主要是通過IO流來實(shí)現(xiàn)的,而對于文件夾則是通過遞歸的復(fù)制文件夾里面的所有文件在復(fù)制文件夾的;</p><p> (6)文件的新建:主要是獲取文件的路徑,在以此進(jìn)行文件的新建,在將其添加到樹上;</p><p><b> 2.3開發(fā)環(huán)境:&l
16、t;/b></p><p> Eclipse 運(yùn)行平臺進(jìn)行開發(fā)的;</p><p><b> 3 系統(tǒng)概要設(shè)計(jì):</b></p><p> 3.1 系統(tǒng)的功能模塊劃分:</p><p> (1)NodeDate.java類:主要用于創(chuàng)建文件節(jié)點(diǎn)類,包括兩個(gè)成員變量,一個(gè)是文件對象,一個(gè)是文件的名稱;<
17、/p><p> (2) FolderRendere.java類:主要是用于繪制節(jié)點(diǎn)的,即用于繪制節(jié)點(diǎn)的圖標(biāo)等;</p><p> (3) MyTree.java類:主要是窗口的設(shè)置,還有鼠標(biāo)偵聽器、樹模型偵聽器、菜單中的文件復(fù)制、文件刪除、文件重命名、文件新建、文件屬性的動(dòng)作偵聽器的各種實(shí)現(xiàn)方法; </p><p> 3.2 系統(tǒng)流程圖;</p>
18、<p><b> 系統(tǒng)詳細(xì)設(shè)計(jì):</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ǎn)改變時(shí)就調(diào)用這個(gè)方法</p><p><b> {</b></p><p> //獲得編輯后的節(jié)點(diǎn)的父節(jié)點(diǎn)</p><p> DefaultMutableTreeNode parent = (DefaultMutableTreeNode)(e.getTr
20、eePath().getLastPathComponent());//返回從根節(jié)點(diǎn)到該節(jié)點(diǎn)的路徑,在找到樹種最后一個(gè)選中的節(jié)點(diǎn)</p><p> DefaultMutableTreeNode node;</p><p><b> try </b></p><p><b> {</b></p><p
21、> int []index = e.getChildIndices();//返回目前修改節(jié)點(diǎn)的索引值</p><p> node = (DefaultMutableTreeNode)(parent.getChildAt(index[0]));//getChildAt()方法取得修改的節(jié)點(diǎn)對象.</p><p> //System.out.println(aClone.toStr
22、ing());</p><p> //克隆體更新名稱,file不變</p><p> ((NodeData)aClone.getUserObject()).ChangeString(node.toString());</p><p> //刪除選定節(jié)點(diǎn)且要求該節(jié)點(diǎn)存在父節(jié)點(diǎn)</p><p> model.removeNodeFromP
23、arent(node);</p><p><b> //添加克隆體</b></p><p> model.insertNodeInto(aClone,parent,index[0]);//在父節(jié)點(diǎn)的子節(jié)點(diǎn)中的 index 處插入aClone</p><p><b> } </b></p><p&g
24、t; catch (NullPointerException exc) //點(diǎn)選的節(jié)點(diǎn)為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)實(shí)現(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)改變時(shí)就調(diào)用這個(gè)方法</p><p
28、> public void treeNodesRemoved(TreeModelEvent e){} // 當(dāng)屬的節(jié)點(diǎn)刪除時(shí)就調(diào)用這個(gè)方法</p><p> public void treeNodesInserted(TreeModelEvent e){} //當(dāng)樹的節(jié)點(diǎn)添加時(shí)就調(diào)用這個(gè)方法 </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é)點(diǎn)路徑</p>
32、<p> String fullPath="";//得到被選擇節(jié)點(diǎn)對應(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 小時(shí)mm分鐘ss秒); sb.append("文件上次修改
39、的時(shí)間:"+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é)點(diǎn)數(shù)據(jù)</b></p><p> Node
43、Data data = (NodeData) selectedNode.getUserObject();</p><p> //顯示是否刪除的確認(rèn)對話</p><p> int n = JOptionPane.showConfirmDialog(tree,"確認(rèn)刪除嗎?","確認(rèn)對話框",JOptionPane.YES_NO_OPTION);&l
44、t;/p><p> if(n == JOptionPane.NO_OPTION)</p><p><b> return;</b></p><p> //如果該節(jié)點(diǎn)是文件</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é)點(diǎn)的刪除</p><p> model.removeNodeFromParent(selectedNode);</p><p><b> }</b></p><p><b> });</b></p><p><b> (4)復(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é)點(diǎn)</b></p><p> DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();</p><p> if(selectedNode == null)</p
53、><p><b> return;</b></p><p><b> //獲得節(jié)點(diǎn)數(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> (5)重命名偵聽器:</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é)點(diǎn)</b></p><p> DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();<
59、/p><p> TreePath editPath = tree.getSelectionPath();//得到被選擇節(jié)點(diǎn)的路徑</p><p> if(selectedNode == null)</p><p><b> return;</b></p><p><b> //開始編輯</b>&
60、lt;/p><p> tree.startEditingAtPath(editPath);//選擇路徑中的最后一個(gè)項(xiàng)并試著編輯它</p><p> //,修改節(jié)點(diǎn)監(jiān)控器,保存節(jié)點(diǎn)新名字</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> ?。?)新建偵聽器:</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> 參考文獻(xiàn):</b></p><p> [1]. Java開發(fā)技術(shù)大全,清華大學(xué)出版社,劉新著;</p>
72、;<p> [2].Java大學(xué)實(shí)用教程(第三版) 電子工業(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> //用于重命名時(shí)生成一個(gè)原節(jié)點(diǎn)的克隆體&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);//一次只能選中一個(gè)節(jié)點(diǎn)先返回樹的選擇模型在設(shè)置樹的選擇模型</p><p>
83、; tree.setCellRenderer(new FolderRenderer());//設(shè)置使用定制的節(jié)點(diǎn)繪制器</p><p> //e.path() 返回已更改節(jié)點(diǎn)的父節(jié)點(diǎn)的路徑。</p><p> //e.childIndices() 返回更改節(jié)點(diǎn)的索引。</p><p> //當(dāng)用戶完成一個(gè)節(jié)點(diǎn)的編輯時(shí),這個(gè) model 產(chǎn)生一個(gè) tree m
84、odel 事件,它會(huì)告訴所有監(jiān)聽者(包括 Jtree ):樹節(jié)點(diǎn)被改變了。注意:盡管 DefaultMutableTreeNode 擁有改變一個(gè)節(jié)點(diǎn)內(nèi)容的方法,但是改變還是需要通過 DefaultTreeModel 上面的方法。否則, tree model 事件就不能產(chǎn)生,事件的監(jiān)聽者(例如 tree )就不能知道這些更新。 </p><p> //為了通知“節(jié)點(diǎn)改變”,我們可以實(shí)現(xiàn)一個(gè) TreeModelLi
85、stener 。這里有一個(gè)關(guān)于 tree model 監(jiān)聽器的例子,當(dāng)用戶為一個(gè)樹節(jié)點(diǎn)輸入一個(gè)新名字時(shí),事件會(huì)被檢測到。 </p><p> model.addTreeModelListener(new TreeModelListener()</p><p><b> {</b></p><p> public void treeNode
86、sChanged(TreeModelEvent e)//當(dāng)樹的節(jié)點(diǎn)改變時(shí)就調(diào)用這個(gè)方法</p><p><b> {</b></p><p> //獲得編輯后的節(jié)點(diǎn)的父節(jié)點(diǎn)</p><p> DefaultMutableTreeNode parent = (DefaultMutableTreeNode)(e.getTreePath().g
87、etLastPathComponent());//返回從根節(jié)點(diǎn)到該節(jié)點(diǎn)的路徑,在找到樹種最后一個(gè)選中的節(jié)點(diǎn)</p><p> DefaultMutableTreeNode node;</p><p><b> try </b></p><p><b> {</b></p><p> int
88、[]index = e.getChildIndices();//返回目前修改節(jié)點(diǎn)的索引值</p><p> node = (DefaultMutableTreeNode)(parent.getChildAt(index[0]));//getChildAt()方法取得修改的節(jié)點(diǎn)對象.</p><p> //System.out.println(aClone.toString());<
89、;/p><p> //克隆體更新名稱,file不變</p><p> ((NodeData)aClone.getUserObject()).ChangeString(node.toString());</p><p> //刪除選定節(jié)點(diǎn)且要求該節(jié)點(diǎn)存在父節(jié)點(diǎn)</p><p> model.removeNodeFromParent(node
90、);</p><p><b> //添加克隆體</b></p><p> model.insertNodeInto(aClone,parent,index[0]);//在父節(jié)點(diǎn)的子節(jié)點(diǎn)中的 index 處插入aClone</p><p><b> } </b></p><p> catch
91、(NullPointerException exc) //點(diǎn)選的節(jié)點(diǎn)為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)實(shí)現(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)改變時(shí)就調(diào)用這個(gè)方法</p><p> publ
95、ic void treeNodesRemoved(TreeModelEvent e){} // 當(dāng)屬的節(jié)點(diǎn)刪除時(shí)就調(diào)用這個(gè)方法</p><p> public void treeNodesInserted(TreeModelEvent e){} //當(dāng)樹的節(jié)點(diǎn)添加時(shí)就調(diào)用這個(gè)方法 </p><p><b> });</b></p&
96、gt;<p> //為pop添加菜單項(xiàng)</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é)點(diǎn)路徑</p><p> String fullPath="";//得到被選擇節(jié)點(diǎn)對應(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小時(shí)mm分鐘ss秒");</p><p> sb.append("文件上次修改的時(shí)間:"+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> //菜單項(xiàng)deleteItem的動(dòng)作偵聽器</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é)點(diǎn)</b></p><p> DefaultMutableTreeNode selectedNode = (Default
120、MutableTreeNode) tree.getLastSelectedPathComponent();</p><p> if(selectedNode == null)</p><p><b> return;</b></p><p><b> //獲得節(jié)點(diǎn)數(shù)據(jù)</b></p><p>
121、 NodeData data = (NodeData) selectedNode.getUserObject();</p><p> //顯示是否刪除的確認(rèn)對話框</p><p> int n = JOptionPane.showConfirmDialog(tree,"確認(rèn)刪除嗎?","確認(rèn)對話框",JOptionPane.YES_NO_OPT
122、ION);</p><p> if(n == JOptionPane.NO_OPTION)</p><p><b> return;</b></p><p> //如果該節(jié)點(diǎn)是文件</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é)點(diǎn)的刪除</p><p> model.removeNodeFromParent(selectedNode);</p><p><b> }</b></p><p><b> });</b></p><p> //復(fù)制菜單項(xiàng)的copyItem的動(dòng)作監(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)--windows資源管理器與任務(wù)管理器
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---文件資源管理器
- 操作系統(tǒng)課程設(shè)計(jì)---windows系統(tǒng)資源管理器與任務(wù)管理器
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---windows系統(tǒng)資源管理器與任務(wù)管理器
- 基于android平臺的資源管理器設(shè)計(jì).pdf
- 基于android平臺資源管理器
- 設(shè)備管理器java課程設(shè)計(jì)
- 《資源管理器──文件夾的管理》的總體教學(xué)設(shè)計(jì)
- 桌面Linux資源管理器研究和改進(jìn).pdf
- GPIB-VXI零槽資源管理器研究.pdf
- 1394-VXI零槽資源管理器的硬件設(shè)計(jì).pdf
- 云計(jì)算平臺中云資源管理器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 面向中小企業(yè)的資源管理器的研究.pdf
- 自動(dòng)交換光網(wǎng)絡(luò)鏈路資源管理器研究.pdf
- 功能較完善的文件管理器java課程設(shè)計(jì)報(bào)告
- 進(jìn)程管理器課程設(shè)計(jì)
- 異構(gòu)無線網(wǎng)絡(luò)中基于認(rèn)知的頻譜資源管理器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- java課程設(shè)計(jì)---java計(jì)算器
- 人力資源管理系統(tǒng)課程設(shè)計(jì)
- 人力資源管理課程設(shè)計(jì)
評論
0/150
提交評論