我有一个问题是删除我表中的所有行,我有一个Jpanel有jtable,当我选择行时它会显示相应的行值,当我点击同一面板上的另一个按钮时它,将重新加载表,这是问题,我得到了异常
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);
}
注意:我在这个示例应用程序中使用两个面板,当所有控件都处于相同状态时,一切正常,如果我在第二个面板中设置表意味着,它会抛出异常,任何想法如何解决这个问题
答案 0 :(得分:6)
试试这段代码..
DefaultTableModel dm = (DefaultTableModel)table.getModel();
dm.getDataVector().removeAllElements();
答案 1 :(得分:6)
您看到的异常来自Swing Thread(AWT-EventQueue-0)。发生异常是因为JTable正在绘制自己(在Swing Thread上),同时你正在修改其他线程上的DefaultTableModel。
不要那样做!对表模型的所有更改都必须在Swing Thread上进行。
使用EventQueue.invokeLater(new Runnable() {...});
或类似内容。
答案 2 :(得分:2)
这是我的方法:
DefaultTableModel model=(DefaultTableModel)table.getModel();
int rc= model.getRowCount();
for(int i = 0;i<rc;i++){
model.removeRow(0);
}
答案 3 :(得分:0)
我使用此代码
dtm_vendor = new DefaultTableModel();
jTable_vendor.setModel(dtm_vendor);