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