如何删除jtable中的所有行?

Mr.*_*ool 0 java swing awt jtable jpanel

我有一个问题是删除我的表中的所有行,我有一个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) 
Run Code Online (Sandbox Code Playgroud)

我几乎使用所有方法删除表中的行,现在我使用此方法

while (table.getRowCount() > 0) {
                    ((DefaultTableModel) table.getModel()).removeRow(0);
                } 
Run Code Online (Sandbox Code Playgroud)

注意:我使用两个面板进行此示例应用程序,当所有控件都在相同时它的一切正常工作,如果我在第二个面板中设置表意味着,它抛出异常,任何想法如何解决这个问题

Kab*_*n S 6

试试这个代码..

DefaultTableModel dm = (DefaultTableModel)table.getModel();
dm.getDataVector().removeAllElements();
Run Code Online (Sandbox Code Playgroud)


Enw*_*red 6

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

不要那样做!对表模型的所有更改都必须在Swing Thread上进行.

请参阅Swing Threads中的Last word

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