我有一个从后台运行线程填充的TableModel。我在插入数据时调用fireTableRowsInserted,这不在EDT上。
我的问题是,我是否需要为fireTableRowsInserted使用invokeLater?
换句话说,以下是正确的:
public void putData(TableRow row) {
// we are not on the EDT here...
rows.add(row);
fireTableRowsInserted(rows.size()-1, rows.size()-1);
}
答案 0 :(得分:2)
好吧,因为这个事件可能触发表重绘,它应该在EDT中,是的。但是你可以依靠SwingUtilities.invokeLater
只在EDT中调用相关部分。