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