我设计的界面是左边JTree,右边JTable,但是运行后,点击树叶节点,右边JTable没显示,无法从数据库读信息,谁帮我看看怎么回事,我触发器用的是JTree的TreeSelectionListener,要加MouseListener不?附代码
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;public class Graduate2 extends JFrame implements TreeSelectionListener{
private JScrollPane jsp_tree,jsp_table;
private JTree tree;
private JTable tb;
//private Conn conect;
String names[];
  int i,j,RowNum,ColNum;
  Object info[][];
  String sqlstr;
  ResultSet res;
  Statement sta;

public Graduate2(){
super("研究生信息查询系统");
Container c = getContentPane();




//定义根节点
DefaultMutableTreeNode root = new DefaultMutableTreeNode("区域选择");
//定义树叶节点
DefaultMutableTreeNode node_e = new DefaultMutableTreeNode("华东");
DefaultMutableTreeNode node_s = new DefaultMutableTreeNode("华南");
DefaultMutableTreeNode node_n = new DefaultMutableTreeNode("华北");
DefaultMutableTreeNode node_c = new DefaultMutableTreeNode("华中");
root.add(node_e);
root.add(node_s);
root.add(node_n);
root.add(node_c);

DefaultMutableTreeNode leafnode1 = new DefaultMutableTreeNode("上海交通大学");
node_e.add(leafnode1);
DefaultMutableTreeNode leafnode2 = new DefaultMutableTreeNode("厦门大学");
node_e.add(leafnode2);
DefaultMutableTreeNode leafnode3 = new DefaultMutableTreeNode("复旦大学");
node_e.add(leafnode3);


DefaultMutableTreeNode leafnode4 = new DefaultMutableTreeNode("中山大学");
node_s.add(leafnode4);
DefaultMutableTreeNode leafnode5 = new DefaultMutableTreeNode("深圳大学");
node_s.add(leafnode5);
DefaultMutableTreeNode leafnode6 = new DefaultMutableTreeNode("广西大学");
node_s.add(leafnode6);


DefaultMutableTreeNode leafnode7 = new DefaultMutableTreeNode("东北大学");
node_n.add(leafnode7);
DefaultMutableTreeNode leafnode8 = new DefaultMutableTreeNode("东北财经大学");
node_n.add(leafnode8);
DefaultMutableTreeNode leafnode9 = new DefaultMutableTreeNode("哈尔滨工业大学");
node_n.add(leafnode9);


DefaultMutableTreeNode leafnode_10 = new DefaultMutableTreeNode("武汉大学");
node_c.add(leafnode_10);
DefaultMutableTreeNode leafnode_11 = new DefaultMutableTreeNode("华中科技大学");
node_c.add(leafnode_11);
DefaultMutableTreeNode leafnode_12 = new DefaultMutableTreeNode("中南财经政法大学");
node_c.add(leafnode_12);

tree = new  JTree(root);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);//只能选一个结点
tree.addTreeSelectionListener(this);    //监听器

jsp_tree = new JScrollPane(tree);
info = new Object[RowNum][];
names = new String[ColNum];
tb =new JTable(info,names);
//tb.setPreferredScrollableViewportSize(new Dimension(400,50));
jsp_table = new JScrollPane(tb);
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jsp_tree,jsp_table);
c.add(splitPane);

//jsp.setViewportView(tree);
//c.add(jsp);
pack();
setSize(800,600);
setResizable(false);
setVisible(true);

addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}



//树节点
public void valueChanged(TreeSelectionEvent e){
JTree tree = (JTree)e.getSource();

DefaultMutableTreeNode selectionNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
String nodeName = selectionNode.toString();
if(selectionNode.isLeaf()){
if(selectionNode.toString().equals("中南财经政法大学")){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException ce){
System.out.println("SQLException:" + ce.getMessage());
}

try{
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=mydb";
          Connection connection=DriverManager.getConnection(url,"","");
          sta=connection.createStatement();
  sqlstr="select count(*) from zncjzf";  //取得数据表的记录数和字段数
          res=sta.executeQuery(sqlstr);
          res.next(); 
          RowNum=res.getInt(1);
          sqlstr="select * from zncjzf";
          res=sta.executeQuery(sqlstr);
          ResultSetMetaData rsmd=res.getMetaData();
          ColNum=rsmd.getColumnCount();
        
          names=new String[ColNum];     //构造JTable
          for (i=1;i<=ColNum;i++) names[i-1]=rsmd.getColumnName(i);
          info=new Object[RowNum][];
          i=0;
          
          while(res.next()){
           info[i]=new Object[ColNum];
            for (j=1;j<=ColNum;j++){
             info[i][j-1]=res.getObject(j);
             }
             i++;
           }
}
catch(SQLException de){
System.out.println("SQLException:" + de.getMessage());
}        
}
}
}

public static void main(String args[]){
new Graduate2();
}
}

解决方案 »

  1.   

    你可以先確定是哪出現的問題   在tree的監聽里面  輸出一條語句看看~  如果能輸出來  就不是監聽的問題了
    然後再輸出你的sql 看看  這個sql的字符串在數據庫中能不能執行,如果能執行  就不是數據庫的問題了~  是你連接的有問題
    最后看看  有沒有查出數據   在查詢后面  輸出下查詢的結果    最后updateUI()一下jtable