我做毕业设计遇到了点问题,急
我找了段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;
}
}
}