说清楚点。
expandrow(int row)是可以的

解决方案 »

  1.   

    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 Test extends JFrame {
    public Test() {
    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("E:/");
    FileNode rootNode = new FileNode(root); rootNode.explore();
    return new DefaultTreeModel(rootNode);
    }
    public static void main(String args[]) {
    GJApp.launch(new Test(),"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(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 FileNode(children[i])); explored = true;
    }
    }
    }
    class GJApp extends WindowAdapter {
    static private JPanel statusArea = new JPanel();
    static private JLabel status = new JLabel(" "); public static void launch(final JFrame f, String title,
      final int x, final int y, 
      final int w, int h) {
    f.setTitle(title);
    f.setBounds(x,y,w,h);
    f.setVisible(true); statusArea.setBorder(BorderFactory.createEtchedBorder());
    statusArea.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
    statusArea.add(status);
    status.setHorizontalAlignment(JLabel.LEFT); f.setDefaultCloseOperation(
    WindowConstants.DISPOSE_ON_CLOSE); f.addWindowListener(new WindowAdapter() {
    public void windowClosed(WindowEvent e) {
    System.exit(0);
    }
    });
    }
    static public JPanel getStatusArea() {
    return statusArea;
    }
    static public void updateStatus(String s) {
    status.setText(s);
    }
    }
      

  2.   

    zzmxw(风) :
    这是一个文件夹浏览器的例程吗?
      

  3.   

    谢谢各位,expandrow()可以对树扩展。