代码之家  ›  专栏  ›  技术社区  ›  Ayman

基于EDT的Java Swing TabLeMod FieldTabelServer

  •  2
  • Ayman  · 技术社区  · 14 年前

    我有一个从后台运行线程填充的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);
    }
    
    1 回复  |  直到 12 年前
        1
  •  2
  •   Riduidel    14 年前

    嗯,因为这个事件可能触发表重绘,所以它应该在EDT中,是的。但你可以依靠 SwingUtilities.invokeLater 只有在EDT中调用相关部分。