本帖最后由 albertwmm 于 2012-11-14 09:49:17 编辑

解决方案 »

  1.   


    是啊。 是有异常输出 连接成功
    java.lang.ArrayIndexOutOfBoundsException: 0
    at com.JingQiao.Table.XWTable.<init>(XWTable.java:55)
    at com.JingQiao.Table.XWTable.main(XWTable.java:21)
      

  2.   

    上面的代码里data这个数组没有初始化。
      

  3.   

    数组首先的初始化,还有,最好使用vector来存储你查出来的数据吗,,然后把它夹在表格上显示。
      

  4.   

    final Object[][] data=new Object[100][5] ;public class XWTable extends JFrame{
    /**
     * 
     */
    private static final long serialVersionUID = 10L; public static void main(String[] args) throws Exception{
    new XWTable();
    } Connection conn = null ;
    Statement st = null ;
    ResultSet rs = null; JTable table ;
    TableModel model ;

    public XWTable(){

    model = new TableModel();
    table=new JTable();

    table.setModel(model);

    table.setPreferredScrollableViewportSize(new Dimension(500,500));//设置窗口大小 JScrollPane scrollPane=new JScrollPane(table); //声明滚动条
    this.getContentPane().add(scrollPane,BorderLayout.CENTER);//将滚动条添加到窗口 this.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });
    this.pack();
    this.setVisible(true);
    } class TableModel extends DefaultTableModel{
    /**
     * 
     */
    private static final long serialVersionUID = 10L; final String[] columnNames={"姓名","学号","性别","班级","地址"}; final Object[][] data=new Object[100][5] ; public TableModel(){ try {
    conn =JdbcUtils.getConnection();
    st = conn.createStatement();
    rs = st.executeQuery
    ("select* from CanKao_table"); Vector ve = new Vector();
    ve.removeAllElements();

    model.fireTableStructureChanged();

    while(rs.next()){ sop.Sop("连接成功"); Vector ve_col = new Vector(); ve_col.addElement(rs.getString(1).trim());
    ve_col.addElement(rs.getString(2).trim());
    ve_col.addElement(rs.getString(3).trim());
    ve_col.addElement(rs.getString(4).trim());
    ve_col.addElement(rs.getString(5).trim()); ve.addElement(ve_col); sop.Sop("连接成功");
    }

    model.fireTableStructureChanged();

    catch (Exception e) {
    e.printStackTrace();
    }
    finally{
    JdbcUtils.free(rs, st, conn);
    }
    } public int getRowCount() {   
    //返回行的数目
    return data.length;
    } public int getColumnCount() { 
    //返回列的数目
    return columnNames.length;
    } public Object getValueAt(int rowIndex, int columnIndex) {
    // 返回指定指定行、列的数据
    return data[rowIndex][columnIndex];
    } public String getColumnName(int columnName){
    //指定列的名字
    return columnNames[columnName];            
    }
    public boolean isCellEditable(int row,int col){
                //不可编辑
    return false;             
    }

    }
    }

    还是运行不出来,eclipse没有明显的错误

    出现异常 NullPointerException
      

  5.   

    你这不是空指针异常嘛,估计是你哪个变量忘了初始化了。报异常的时候你至少得看看哪一行报错,这样才好找错误点啊。你找到那一行,把每一个元素都system.out.println();一下,就知道哪个为空。看你的思路是想把所有的用户都查询出来都显示在页面上面是吧?
    你可以申明一个BUTTON组,然后在table的最后一栏里面添加一个按钮,然后对这个按钮添加监听就行了。
    你的这个思路实现起来应该不会太难,当然,现在这种功能一般都使用SSH来实现了。
    但是java的页面功能是很简单的,不是很好设置,如果从数据库提取的数据太多的话,一个页面显示不了怎么弄?分栏么?这又得麻烦一整子。
    不过做这个还是挺有趣的,至少图形界面是比单纯的代码有意思多了。
    今天有点晚了,以后如果代码中如果有错误,当然记得附上代码和报错的行数,或者思路上有问题可以回下贴,我有空帮你看看。
      

  6.   

    只有异常  = = 异常蛮多的 我这里有2行  就是9楼的  8和18行
    new XWTable();           public XWTable(){
      

  7.   


    还有91行  return data.length;这行时有时没得 = =  这是为什么啊
      

  8.   

       public static void main(String[] args) throws Exception{         new XWTable();     }
    改成
     public static void main(String[] args){
           try {
    new XWTable();
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
    }
    然后你看看报的是什么异常,把那个异常和行号发上来。