读书人

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

发布时间: 2011-12-29 22:09:38 作者: rapoo

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

读书人网 >J2SE开发

热点推荐