我使用了JTable显示从数据库中查询到的内容,点击某个按钮之后,数据库中的内容就在JTable里显示,但是,如果再次点击此按钮,那么数据库中的信息就会接在刚才显示信息的后面,等于两次查询的结果叠加在了一起,JTable里面就显示了两遍数据库中的信息,求助这样的问题应该怎么解决???

解决方案 »

  1.   

    再次查询的时候,你的JTable对应的模型数据需要重新赋值,JTable也要重新绘制,没有贴代码只能思路上告诉你贴出代码和数据表的话可以帮你改改
      

  2.   

    try {
    sql = con.prepareStatement("select * from test");
        resultset = sql.executeQuery();
        ResultSetMetaData rsmd=resultset.getMetaData();
        for(int i = 1; i <= rsmd.getColumnCount(); i++)
           title.add(rsmd.getColumnName(i));
        while(resultset.next()){
             Vector <String> tmp=new Vector<String>();
             for(int i = 1; i <= rsmd.getColumnCount(); i++)
                 tmp.add(resultset.getString(i));
             content.add(tmp);
        }
        dftm = new DefaultTableModel(content,title);
        table = new JTable(dftm);
    // table.setRowHeight(20);
    table.setEnabled(false);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    scrollPane.getViewport().add(table); 
        con.close();
    }catch (Exception ex) {
     System.out.println (ex);
    }
      

  3.   

    这句去掉 scrollPane.getViewport().add(table); 
    new ScrollPanel的时候就通过ScrollPane sp = new ScrollPane(table);
    的方法将table添加进去。
    更新table的时候,只需要table.setModel(TableModel model)方法
    ScrollPane里面会自动更新table
    如果每更新一次tableModel都add(table)当然后重复。