//SqlTree1.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.tree.*;
import javax.swing.border.*;
import java.applet.*;
import javax.swing.JPanel;
import java.net.*;
import java.io.File;
import java.util.*;
import java.util.Vector;
import java.sql.*;class SqlTree extends JFrame
{
JTree tree = null;
JScrollPane treescroll = null;
     Container container = null;
     DBPool pool = null; public SqlTree()
{
super("SqlTree1");
container = this.getContentPane();
//setLayout(new BorderLayout());
pool = new DBPool("tree pool");
treeInit();
treescroll = new JScrollPane(tree);
container.add(treescroll);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setSize(800,580);
show();
}
public void treeInit()
{
tree=new JTree(createTreeModel());
tree.putClientProperty("JTree.lineStyle","Angled");
tree.setCellRenderer(new TreeRenderer());
tree.addTreeExpansionListener(new MyTreeExpansionListener());
tree.addTreeSelectionListener(new MyTreeSelectionListener());这个下面地方为什么有错?应该怎么写?
MyTreeExpansionListener.pool = this.pool;
MyTreeSelectionListener.pool = this.pool;
//tree.addMouseListener(new MyMouseEvent());
}

public DefaultTreeModel createTreeModel()
{
String root="sytouch";
treeNode rootNode=new treeNode(root);
Connection con = pool.GetConnection();
rootNode.explore(con);
pool.ReleaseConn(con);
//directoryname = "c:\\";
System.out.println("createTreeModel ok");
return new DefaultTreeModel(rootNode);
}
/////////////////class MyTreeSelectionListener
class MyTreeSelectionListener implements TreeSelectionListener
{
//DBPool pool = new DBPool("selected pool");
DBPool pool = null;
public void valueChanged(TreeSelectionEvent e)
{
System.out.println("selected");
TreePath path=e.getPath();
treeNode node=(treeNode)path.getLastPathComponent();
if(!node.isex())
{
DefaultTreeModel model=(DefaultTreeModel)tree.getModel();
Connection con = pool.GetConnection(); 
node.explore(con);
pool.ReleaseConn(con);
model.nodeStructureChanged(node);
}
}
}
/////////////////////////class MyTreeExpansionListener
class MyTreeExpansionListener implements TreeExpansionListener
{
//DBPool pool = new DBPool("expansion pool");
DBPool pool = null;
public void treeCollapsed(TreeExpansionEvent e)
{
System.out.println("exacted");
}
public void treeExpanded(TreeExpansionEvent e)
{
System.out.println("expanded");
TreePath path=e.getPath();
treeNode node=(treeNode)path.getLastPathComponent();
if(!node.isex())
{
DefaultTreeModel model=(DefaultTreeModel)tree.getModel();
Connection con = pool.GetConnection();
node.explore(con);
pool.ReleaseConn(con);
model.nodeStructureChanged(node);
}
}
}
public static void main(String args[])
{
SqlTree frame = new SqlTree();
}
class WindowsEventListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
}
class treeNode extends DefaultMutableTreeNode
{
boolean ex=false;
Vector DirectoryList = new Vector();
String mldm;
//String[] directory = new String[2];
public treeNode(String f)
{
setUserObject(f);
}
public boolean isex()
{
return ex;
}
public boolean noex()
{
ex = false;
return ex;
}
public int getCount()
{
System.out.println("have leaf:"+getLeafCount());
System.out.println("have chils:"+getChildCount());
System.out.println("have brother:"+getSiblingCount());
//return getChildCount();
return getLeafCount();
}
public String getDirectory()
{
return (String)getUserObject();
}
public void remove(int childIndex) 
{
MutableTreeNode child = (MutableTreeNode)getChildAt(childIndex);
children.removeElementAt(childIndex);
     }
public void delete()
{
removeAllChildren();
}
public void explore(Connection con)
{
if(!isex())
{
mldm = getDirectory();
System.out.println(mldm);
connect1(mldm,con);
for(int i=0;i<DirectoryList.size();i++)
{
add(new treeNode((String)DirectoryList.elementAt(i)));
}
ex=true;
System.out.println("TreeNode explore ok");
}
}
public void connect1(String mldm,Connection conn)
{
try
{
}
catch(Exception e)
{
System.err.println(e.toString());
System.exit(1);
}
}
}
class DBPool
{
}

解决方案 »

  1.   

    首先,MyTreeExpansionListener和MyTreeSelectionListener是类,不是实例;其次,它们也没有名为pool的显露的属性,所以你不能进行赋值。
    MyTreeExpansionListener.pool = this.pool;
    MyTreeSelectionListener.pool = this.pool;
      

  2.   

    有修改正确,首先得追溯到前面的语句
    MyTreeExpansionListener myTreeExpansionListener = new MyTreeExpansionListener());
    myTreeExpansionListener.pool = this.pool;
    MyTreeSelectionListener myTreeSelectionListener = new MyTreeSelectionListener());
    myTreeSelectionListener.pool = this.pool;
    tree.addTreeExpansionListener(myTreeExpansionListener);
    tree.addTreeSelectionListener(myTreeSelectionListener);其次,你得修改MyTreeExpansionListener和MyTreeSelectionListener。
    public DBPool pool = null;如果你只希望它出现一个实例,可以参看Singleton模式。
      

  3.   

    要修改正确,首先得追溯到前面的语句
    MyTreeExpansionListener myTreeExpansionListener = new MyTreeExpansionListener());
    myTreeExpansionListener.pool = this.pool;
    MyTreeSelectionListener myTreeSelectionListener = new MyTreeSelectionListener());
    myTreeSelectionListener.pool = this.pool;
    tree.addTreeExpansionListener(myTreeExpansionListener);
    tree.addTreeSelectionListener(myTreeSelectionListener);其次,你得修改MyTreeExpansionListener和MyTreeSelectionListener。
    public DBPool pool = null;如果你只希望它出现一个实例,可以参看Singleton模式。