你的信誉值这么低,真怕你不给分。
给你个导航的例子: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 FileExplorer extends JFrame{
public FileExplorer(){
final JTree tree = new JTree(createTreeModel());
JScrollPane scrollPane = new JScrollPane(tree);
getContentPane().add(scrollPane, BorderLayout.CENTER);
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();
FileNode node = (FileNode)path.getLastPathComponent();
if(!node.isExplored()){
DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
GJApp.updateStatus("exploring...");
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){}
SwingUtilities.invokeLater(new Runnable(){
public void run(){
GJApp.updateStatus("");
}
});
}
}
});
}
private DefaultTreeModel createTreeModel(){
File root = new File("C:/");
FileNode rootNode = new FileNode(root);
FileNode node;
rootNode.explore();
return new DefaultTreeModel(rootNode);
}
public static void main(String[] args){
GJApp.launch(new FileExplorer(), "JTree File Explorer", 300, 300, 450, 400);
}
}class FileNode extends DefaultMutableTreeNode{
private boolean explored = false;
public FileNode(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("\\");
return (index!=-1 && index!=filename.length()-1)? filename.substring(index+1) : filename;
}
public void explore(){
if(!isExplored()){
File file = getFile();
File[] children = file.listFiles();
for(int i=0;i<children.length;i++){
add(new FileNode(children[i]));
}
explored = true;
}
}
}