2010-04-19 42 views
2

我有一个从后台运行线程填充的TableModel。我在插入数据时调用fireTableRowsInserted,这不在EDT上。Java Swing TableModel fireTableRows插入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); 
} 

回答

2

好,因为这事件可能触发表重绘,它应该是在美国东部时间,是的。但是你可以依靠SwingUtilities.invokeLater只有EDT中的相关部分。