在进行Swing编程的时候,当遇到需要刷新JTable控件的时候,网上的大部分说法是这样的
删除JTable中的每一行。然后重新加载
但是这样会出现一个问题ArrayIndexOutOfBoundsException
这是因为移除每一行的速度非常快,这样会造成已经移除完了,但是移除每一行的循环还没有完,就会出现数组越界的问题。
但是还有一种方法,简单粗暴可以移除所有的行。
model.setRowCount(0);
setRowCount
public void setRowCount(int rowCount)
设置模型中的行数。如果新的大小大于当前大小,则将新行添加到该模型的结尾,如果新的大小小于当前大小,则丢弃索引 rowCount 处及其之后的所有行。
这样就不会有异常了。
附上整个刷新代码:
void refreshTable() {
model.setRowCount(0);
for (String string : getMess(Song.queny(5, ""))) {
String[] args = string.split(",");
model.addRow(args);
}
}