给你一个简单的例子,不能直接运行,你只能看一下,如果只是选择,不觉得很困难呀??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();
}}
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();
}}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货