0

我有一个问题要删除表中的所有行,我有一个具有 jtable 的 Jpanel,当我选择行时,它将显示相应的行值,当我单击同一面板上的另一个按钮时,意味着它,将重新加载表,这是问题所在,我遇到了异常

Exception in thread "AWT-EventQueue-0"

    java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
        at java.util.Vector.elementAt(Unknown Source)
        at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source)
        at javax.swing.JTable.getValueAt(Unknown Source)
        at Testsample$16.valueChanged(Testsample.java:1516) 

我几乎使用所有方法来删除表中的行现在我使用这种方法

while (table.getRowCount() > 0) {
                    ((DefaultTableModel) table.getModel()).removeRow(0);
                } 

注意:我在这个示例应用程序中使用了两个面板,当所有控件都相同时,一切正常,如果我在第二个面板中设置表格意味着,它会抛出异常,知道如何解决这个问题

4

4 回答 4

6

试试这个代码..

DefaultTableModel dm = (DefaultTableModel)table.getModel();
dm.getDataVector().removeAllElements();
于 2012-06-15T06:23:20.930 回答
6

您看到的异常来自 Swing 线程 (AWT-EventQueue-0)。发生异常是因为 JTable 正在绘制自身(在 Swing 线程上),同时您正在修改其他线程上的 DefaultTableModel。

不要那样做!对表模型的所有更改都必须在 Swing Thread 上发生。

参见Swing Threads 中的最后一句话

使用EventQueue.invokeLater(new Runnable() {...});或类似的东西。

于 2012-06-15T16:28:06.577 回答
2

这是我的方法:

DefaultTableModel model=(DefaultTableModel)table.getModel();
            int rc= model.getRowCount();
            for(int i = 0;i<rc;i++){
                model.removeRow(0);
            }   
于 2012-06-15T12:37:03.180 回答
0

我使用此代码

dtm_vendor = new DefaultTableModel();
jTable_vendor.setModel(dtm_vendor);
于 2018-06-06T11:46:36.987 回答