import java.awt.*;
import javax.swing.*;
import javax.swing.table.TableColumn;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.*;
public class Vec {
Frame f;
JTable table;
JScrollPane scrollPane;
TableColumn column;
 ResultSetMetaData rsmd;
 Vector   columnHeads ;
 Vector   rows;
 public static final String sq="select * from use_login";
 
 Statement stmt;
 Connection con;
  
  public void getvVlue(){
 
  try{
   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
   con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Hospital;user=sa;password=sasa");
   stmt=con.createStatement();
   ResultSet rs=stmt.executeQuery(sq);
       rsmd=rs.getMetaData();
        columnHeads   =   new   Vector();   
            rows   =   new   Vector();   
           for(int i=1;i<=rsmd.getColumnCount();i++   ){
            columnHeads.addElement(rsmd.getColumnName(i));
            
           }
           
   while(rs.next()){
  for(int i=1;i<=rsmd.getColumnCount();i++){
  rows.addElement(rs.getObject(i));
  
  }
  
   }
   
  }
   
   catch(Exception e ){
   e.printStackTrace();
   
   }
table =new JTable(rows,columnHeads);
scrollPane = new JScrollPane(table);
   }  
public Vec(){
    getvVlue();
f=new Frame();
f.setBounds(250, 250, 300, 200);


}
public void lauch(){

f.add(scrollPane);
f.setVisible(true);

}
public static void main(String args[]){
  new Vec().lauch();

}
}
看了 JTable的资料,写个程序连接数据库中的表 ,但是执行时抛出了Exception in thread "main" java.lang.ClassCastException: java.lang.Integer
at javax.swing.table.DefaultTableModel.justifyRows(Unknown Source)
at javax.swing.table.DefaultTableModel.setDataVector(Unknown Source)
at javax.swing.table.DefaultTableModel.<init>(Unknown Source)
at javax.swing.JTable.<init>(Unknown Source)
at Vec.getvVlue(Vec.java:56)不知道怎么解决,希望高手指导

解决方案 »

  1.   

    你的Vec.java 56行是什么?
    这个异常是类型转换异常 Integer与另外一个类型进行强制转换发生的异常。
      

  2.   

    你用集成环境调试跟踪一下Vec.java文件的第56行就知道了,类型转换异常,你那一行在试图把一个整数(Integer)类型的数据当作Object强制转换成别的类型的数据。
      

  3.   

    类型转换异常应该是这里面的错误自己检查下ResultSet rs=stmt.executeQuery(sq); 
          rsmd=rs.getMetaData(); 
            columnHeads  =  new  Vector();  
                rows  =  new  Vector();  
              for(int i=1;i <=rsmd.getColumnCount();i++  ){ 
              columnHeads.addElement(rsmd.getColumnName(i)); 
              
              } 
              
      while(rs.next()){ 
      for(int i=1;i <=rsmd.getColumnCount();i++){ 
      rows.addElement(rs.getObject(i)); 
      
      

  4.   


    public JTable(Vector rowData,
                  Vector columnNames)构造 JTable,用来显示 Vectors 的 Vector (rowData) 中的值,其列名称为 columnNames。rowData 中包含的 Vectors 应该包含该行的值。换句话说,可以通过以下代码获取第 1 行,第 5 列单元格的值: ((Vector)rowData.elementAt(1)).elementAt(5);参数:
    rowData - 新表的数据
    columnNames - 每列的名称
    这是JDK中对于JTable的构造函数,你在程序中用的
    table =new JTable(rows,columnHeads); 
    其中的rows里的元素是不是应该是Vector类型的??
      

  5.   

    java.lang.ClassCastException
    看到这个错误就知道是强制转换的错误了!!!
      

  6.   

    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer 
    与Integer 这个类型之间的转型时,出错了.你的代码的56行在哪,你再看看啊
      

  7.   

    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer 
    与Integer 这个类型之间的转型时,出错了.你的代码的56行在哪,你再看看啊
      

  8.   

    javax.swing.JTable.JTable(Vector rowData, Vector columnNames)
    Constructs a JTable to display the values in the Vector of Vectors, rowData, with column names, columnNames. The Vectors contained in rowData should contain the values for that row. In other words, the value of the cell at row 1, column 5 can be obtained with the following code: 
    /* 
     *使用JTable(Vector rowData, Vector columnNames)这个构造方法时,rowData里面必须也是vector
     *你目前的rows里面存放的并不是vector,所以JDK执行到
     *((Vector)dataVector.elementAt(i)).setSize(getColumnCount());的时候,
     *dataVector.elementAt(i)取出来的是个Integer,而需要的是个vector,所有就报了ClassCastException
     *去查看下这个构造的使用方法就行了
    */
    table =new JTable(rows,columnHeads); //第一个参数的问题,应该是一个存放着vector的vector
      

  9.   


    //把结果放进Vector 就好
    while (rs.next()) {
    for (int i = 1; i <= rsmd.getColumnCount(); i++) {
    Vector result = new Vector();
    result.addElement(rs.getObject(i));
    rows.addElement(result); } }
      

  10.   

    ClassCastException
    =========================
    常见异常类型表示什么意思应该记住,这样才好做出判断,排查
      

  11.   

    我觉得应该这样吧,不知道是不是理解错了,请谅解!!while (rs.next()) {
      for (int i = 1; i <= rsmd.getColumnCount(); i++) {
        Vector result = new Vector();
        result.addElement(rs.getObject(i));
      }
      rows.addElement(result);
    }