这个问题纠结了很久很久,目前网上好像还没有人遇到过像我这样比较繁杂的问题,今天终于搞定了,分享给大家看一看
情况是这样的,我做一个关于SWING的工程,当然会用到大量的表格最早清空表格是这样写的
// DefaultTableModel model = (DefaultTableModel) table.getModel();
// for (int i = model.getRowCount() - 1; i >= 0; i--) {
// model.removeRow(i);
// }
用这个方法是有问题的,因为是JTable >> TableModel >> TableData(Vector或String[])这样的映射关系,如果用上面的方法,如果数据增加或减少都不会通知TableModel ,就导致每次清数据就报数据越界异常ArrayIndexOutOfBoundsException。
如果直接清理数据是会通知上层的监听,改变模型
((DefaultTableModel) table.getModel()).getDataVector().clear(); //清除表格数据
((DefaultTableModel) table.getModel()).fireTableDataChanged();//通知模型更新
table.updateUI();//刷新表格
Jtable 清空
最新推荐文章于 2022-11-09 15:14:41 发布