我找了段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;  
 }  
 }  
}

解决方案 »

  1.   

    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;
            }
        }
    }
      

  2.   

    对了,还有,我把你的代码全部复制过来,他只有窗口,里面的tree和按钮都没有啊