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)
注意:我使用两个面板进行此示例应用程序,当所有控件都在相同时它的一切正常工作,如果我在第二个面板中设置表意味着,它抛出异常,任何想法如何解决这个问题
试试这个代码..
DefaultTableModel dm = (DefaultTableModel)table.getModel();
dm.getDataVector().removeAllElements();
Run Code Online (Sandbox Code Playgroud)
您看到的异常来自Swing Thread(AWT-EventQueue-0).发生异常是因为JTable正在绘制自己(在Swing线程上),同时您正在修改其他线程上的DefaultTableModel.
不要那样做!对表模型的所有更改都必须在Swing Thread上进行.
使用EventQueue.invokeLater(new Runnable() {...});或类似的东西.