给你一个简单的例子,不能直接运行,你只能看一下,如果只是选择,不觉得很困难呀??import java.awt.*;
import java.awt.event.*;
import javax.swing.tree.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;public class CTreeManager implements TreeSelectionListener
{
  CMainFrame myOwner;
  DefaultTreeModel myTreeModel = null;
  DefaultMutableTreeNode root = null;
  JTree booksTree = null;
  JPopupMenu pop = null;  public CTreeManager(CMainFrame owner)
  {
    myOwner = (CMainFrame)owner;
    booksTree = myOwner.jTree1;
    pop = myOwner.popMenu;    root = new DefaultMutableTreeNode("System");
  }  public void createTree(String initDir) throws Exception
  {
    getClass(initDir);
    myTreeModel = new DefaultTreeModel(root);
    myTreeModel.setAsksAllowsChildren(true);
    if( myTreeModel==null ) throw new Exception("Null Model.");   booksTree = new JTree(myTreeModel);
   booksTree.putClientProperty("JTree.lineStyle","Angled");
   booksTree.setShowsRootHandles(true);
   myOwner.jScrollPane1.getViewport().add(booksTree,null);
   booksTree.setRootVisible(false);
   booksTree.addTreeSelectionListener(this);
   booksTree.addMouseListener(new myMouseAdapter());
   booksTree.setCellRenderer(new CGroupCellRender());  }  private void getClass(String initDir)
  {
    File rootDir = new File(initDir);    File[] child = rootDir.listFiles();
    for(int i=0;i<child.length;i++){
      if( !child[i].isDirectory() ) continue;
      DefaultMutableTreeNode item = new DefaultMutableTreeNode(child[i].getName());
      item.setAllowsChildren(true);
      root.add(item);
      getGroup(item,child[i]);
    }
  }  private void getGroup(DefaultMutableTreeNode item,File f)
  {
    String[] flist = f.list();
    for(int i=0;i<flist.length;i++) {
      CGroupNode one = new CGroupNode(flist[i]);
      one.setAllowsChildren(false);
      item.add(one);
    }
  }
  public DefaultTreeModel findTree(CUserTag u)
  {
    DefaultMutableTreeNode classNode=null;    booksTree.setSelectionRow(0);
    DefaultMutableTreeNode root = (DefaultMutableTreeNode)booksTree.getSelectionPath().getPathComponent(0);
    Enumeration e = root.breadthFirstEnumeration();
    while(e.hasMoreElements()){
      classNode = (DefaultMutableTreeNode)e.nextElement();
      if( classNode.toString().equals(u.mClass))  break;
    }
    System.out.println("classnode==="+classNode.toString());
    e = classNode.breadthFirstEnumeration();
    while(e.hasMoreElements()){
     Object obj = e.nextElement();
       System.out.println("obj=="+obj.toString());
     if( obj instanceof CGroupNode ){
       CGroupNode gNode = (CGroupNode)obj;
       if( gNode.Title.equals(u.mGroup) ) return gNode.myModel;
     }
    }
    return null;
  }  public CGroupNode findGroup(CUserTag u)
  {
    DefaultMutableTreeNode classNode=null;    booksTree.setSelectionRow(0);
    DefaultMutableTreeNode root = (DefaultMutableTreeNode)booksTree.getSelectionPath().getPathComponent(0);
    Enumeration e = root.breadthFirstEnumeration();
    while(e.hasMoreElements()){
      classNode = (DefaultMutableTreeNode)e.nextElement();
      if( classNode.toString().equals(u.mClass))  break;
    }
    System.out.println("classnode==="+classNode.toString());
    e = classNode.breadthFirstEnumeration();
    while(e.hasMoreElements()){
     Object obj = e.nextElement();
       System.out.println("obj=="+obj.toString());
     if( obj instanceof CGroupNode ){
       CGroupNode gNode = (CGroupNode)obj;
       if( gNode.Title.equals(u.mGroup) ) return gNode;
     }
    }
    return null;  }  public void valueChanged(TreeSelectionEvent e)
  {
//    DefaultMutableTreeNode snode = (DefaultMutableTreeNode)myOwner.jTree1.getLastSelectedPathComponent();
//    TreePath tp = booksTree.getSelectionPath();
//    JOptionPane.showMessageDialog(myOwner,tp.toString());
  }  //鼠标事件处理类
  class myMouseAdapter extends MouseAdapter
  {
    public void mouseReleased(MouseEvent evt)
    {
      if( pop==null || !evt.isPopupTrigger() ) return;      int selRow=booksTree.getRowForLocation(evt.getX(),evt.getY());
TreePath selPath=booksTree.getPathForLocation(evt.getX(),evt.getY());
if (selPath!=null){
   booksTree.setSelectionPath(selPath);
   Object lastComponent = selPath.getLastPathComponent();
if(lastComponent instanceof CGroupNode){
             CGroupNode gNode = (CGroupNode)lastComponent;
             myOwner.jMenuItem7.setEnabled(!gNode.isOpened);
             myOwner.jMenuItem8.setEnabled(gNode.isOpened);
             pop.show(evt.getComponent(),evt.getX(),evt.getY());
          }
      }
    }
}  //系统事件处理
  public void openBook() throws Exception
  {
    CGroupNode gNode = (CGroupNode)booksTree.getLastSelectedPathComponent();
    if( !gNode.openLMS() ) throw new Exception("不能打开此课程,请确认相关目录下的配置文件。");
    booksTree.updateUI();
  }
  public void closeBook()
  {
    CGroupNode gNode = (CGroupNode)booksTree.getLastSelectedPathComponent();
    gNode.closeLMS();
    booksTree.updateUI();
  }
  public void openAllBooks()
  {
    booksTree.setSelectionRow(0);
    DefaultMutableTreeNode root = (DefaultMutableTreeNode)booksTree.getSelectionPath().getPathComponent(0);
    Enumeration e = root.breadthFirstEnumeration();
    while(e.hasMoreElements()){
      Object obj = e.nextElement();
      if( obj instanceof CGroupNode){
        CGroupNode gNode = (CGroupNode)obj;
        if( !gNode.isOpened ) if( !gNode.openLMS() ) System.out.println("Can't find file /webconfig.properties ");
      }
    }
    booksTree.updateUI();
  }
  public void closeAllBooks()
  {
    booksTree.setSelectionRow(0);
    DefaultMutableTreeNode root = (DefaultMutableTreeNode)booksTree.getSelectionPath().getPathComponent(0);
    Enumeration e = root.breadthFirstEnumeration();
    while(e.hasMoreElements()){
      Object obj = e.nextElement();
      if( obj instanceof CGroupNode){
        CGroupNode gNode = (CGroupNode)obj;
        if( gNode.isOpened ) gNode.closeLMS();
      }
    }
    booksTree.updateUI();
  }}