仿資源管理器的java課程設(shè)計_第1頁
已閱讀1頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論