首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小弟我做毕业设计遇到了点有关问题,

2011-12-29 
我做毕业设计遇到了点问题,急我找了段Jtree的代码,能够显示我指定目录下的文件,我还增加了确定和取消的按

我做毕业设计遇到了点问题,急
我找了段Jtree的代码,能够显示我指定目录下的文件,我还增加了确定和取消的按纽,我是想在按确定的时候,能够把我在上面选择的文件的名字保存下来,怎么能够实现啊,确定的监听我知道,主要是怎么能保存文件名,谢谢大家了,代码如下:
import   java.awt.event.ActionListener;  
import   java.awt.*;  
import   java.awt.event.*;  
import   java.io.*;  
import   java.util.*;  


import   javax.swing.*;    
import   javax.swing.event.*;    
import   javax.swing.tree.*;    
import   java.awt.*;    
import   java.awt.event.*;    
import   java.io.File;    
import   java.util.EventObject;    
   
public   class   Gongxiangmulu   extends   JFrame    
{  
JButton   queding2   =   new   JButton( "下载 ");    
JButton   quxiao2   =   new   JButton( "取消 ");    
Box   box1=Box.createHorizontalBox();  


String   mulu;  


  public   Gongxiangmulu()   {    
  super( "共享目录 ");  
  setBounds(350,200,400,500);  
   
  setVisible(true);    
  final   JTree   tree   =   new   JTree(createTreeModel());    
  JScrollPane   l_scrollPane   =   new   JScrollPane(tree);    
  getContentPane().add(l_scrollPane);    
  box1.add(Box.createHorizontalStrut(120));  
  box1.add(queding2);  
  box1.add(Box.createHorizontalStrut(10));  
  box1.add(quxiao2);  
  getContentPane().add(box1,   BorderLayout.SOUTH);  
   
   
   
   
  //getContentPane().add(GJApp.getStatusArea(),   BorderLayout.SOUTH);    
   
  tree.addTreeExpansionListener(new   TreeExpansionListener(){    
  public   void   treeCollapsed(TreeExpansionEvent   e)   {    
  }    
  public   void   treeExpanded(TreeExpansionEvent   e)   {    
  UpdateStatus   updateThread;    
  TreePath   path   =   e.getPath();    
  FileNode1   node   =   (FileNode1)    
  path.getLastPathComponent();    
   
  if(   !   node.isExplored())   {    
  DefaultTreeModel   model   =   (DefaultTreeModel)tree.getModel();    
   
   
  UpdateStatus   us   =   new   UpdateStatus();    
  us.start();    
   
  node.explore();    
  model.nodeStructureChanged(node);    
  }    
  }    
  class   UpdateStatus   extends   Thread   {    
  public   void   run()   {    
  try   {   Thread.currentThread().sleep(450);   }    
  catch(InterruptedException   e)   {   }    
   
   
  }    
  }    
  });    
  }    
  DefaultTreeModel   createTreeModel()   {    


  File   root   =   new   File( "F:/P2P资料 ");    
  FileNode2   rootNode   =   new   FileNode2(root);    
   
  rootNode.explore();    
  return   new   DefaultTreeModel(rootNode);    
  }    
   
   
   
}    
class   FileNode2   extends   DefaultMutableTreeNode   {    
  private   boolean   explored   =   false;    
   
  public   FileNode2(File   file)   {    
  setUserObject(file);    
  }    
  public   boolean   getAllowsChildren()   {   return   isDirectory();   }    
  public   boolean   isLeaf()   {   return   !isDirectory();   }    
  public   File   getFile()   {   return   (File)getUserObject();   }    
   
  public   boolean   isExplored()   {   return   explored;   }    
   
  public   boolean   isDirectory()   {    
  File   file   =   getFile();    
  return   file.isDirectory();    
  }    
  public   String   toString()   {    
  File   file   =   (File)getUserObject();    
  String   filename   =   file.toString();    
  int   index   =   filename.lastIndexOf(File.separator);    
   
  return   (index   !=   -1   &&   index   !=   filename.length()-1)   ?    
  filename.substring(index+1)   :    
  filename;    
  }    
  public   void   explore()   {    
  if(!isDirectory())    
  return;    
   
  if(!isExplored())   {    
  File   file   =   getFile();    
  File[]   children   =   file.listFiles();    
   
  for(int   i=0;   i   <   children.length;   ++i)    
  add(new   FileNode2(children[i]));    
   
  explored   =   true;    
  }    
  }    
}

[解决办法]
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

public class Gongxiangmulu extends JFrame
{
JButton queding2 = new JButton( "下载 ");
JButton quxiao2 = new JButton( "取消 ");
Box box1 = Box.createHorizontalBox();

String mulu;



public Gongxiangmulu()
{
super( "共享目录 ");
setBounds(350, 200, 400, 500);

setVisible(true);
final JTree tree = new JTree(createTreeModel());
JScrollPane l_scrollPane = new JScrollPane(tree);
getContentPane().add(l_scrollPane);
box1.add(Box.createHorizontalStrut(120));
box1.add(queding2);
box1.add(Box.createHorizontalStrut(10));
box1.add(quxiao2);
getContentPane().add(box1, BorderLayout.SOUTH);

// getContentPane().add(GJApp.getStatusArea(), BorderLayout.SOUTH);

queding2.addActionListener(new ActionListener()
{

public void actionPerformed(ActionEvent e)
{
for(TreePath path : tree.getSelectionPaths())
System.out.println(((File)(((FileNode2)path.getLastPathComponent()).getUserObject())).getName());
//根据path 可以得到文件全路径
}
});

tree.addTreeExpansionListener(new TreeExpansionListener()
{
public void treeCollapsed(TreeExpansionEvent e)
{
}

public void treeExpanded(TreeExpansionEvent e)
{
UpdateStatus updateThread;
TreePath path = e.getPath();
FileNode2 node = (FileNode2) path.getLastPathComponent();

if (!node.isExplored())
{
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();

UpdateStatus us = new UpdateStatus();
us.start();

node.explore();
model.nodeStructureChanged(node);
}
}

class UpdateStatus extends Thread
{
public void run()
{
try
{
Thread.currentThread().sleep(450);
}
catch (InterruptedException e)
{
}

}
}
});
}

DefaultTreeModel createTreeModel()
{
File root = new File( "F:\\ ");
FileNode2 rootNode = new FileNode2(root);

rootNode.explore();
return new DefaultTreeModel(rootNode);
}

public static void main(String[] args)
{
new Gongxiangmulu();
}

}

class FileNode2 extends DefaultMutableTreeNode
{
private boolean explored = false;

public FileNode2(File file)
{
setUserObject(file);
}

public boolean getAllowsChildren()
{
return isDirectory();
}

public boolean isLeaf()
{
return !isDirectory();
}

public File getFile()
{
return (File) getUserObject();
}

public boolean isExplored()
{
return explored;
}

public boolean isDirectory()
{
File file = getFile();
return file.isDirectory();
}

public String toString()
{
File file = (File) getUserObject();
String filename = file.toString();
int index = filename.lastIndexOf(File.separator);

return (index != -1 && index != filename.length() - 1) ? filename


.substring(index + 1) : filename;
}

public void explore()
{
if (!isDirectory())
return;

if (!isExplored())
{
File file = getFile();
File[] children = file.listFiles();

for (int i = 0; i < children.length; ++i)
add(new FileNode2(children[i]));

explored = true;
}
}
}

热点排行