如果UPDATE事件稍后出现,JTable不会显示新插入的行

时间:2013-03-22 09:18:50

标签: java swing jtable

我有一个带JTable的Swing客户端。 用户可以添加新行,我们的Java代码将新行插入表模型 问题是新行没有显示在JTable中,因为我们的代码也会在tableChanged INSERT事件之后触发tableChanged UDPATE事件。
它们在模型中,但只有在我调整JTable的大小时才显示线条。

这就是发生的事情(所有这些事情都发生在AWT EDT中):

myTableModel.fireTableRowsInserted()
  => mJTable.tableChanged(e)                         // 1) INSERT event on a sorted table, e.getFirstRow(), e.getLastRow() are correct
    =>    // Some Swing internal stuff...
      => defaultListSelectionModel.fireValueChanged()
        => myListSelectionListener.valueChanged(ev)  // 2) Our ListSelectionListener is informed. The listener implementation now needs to update a row.
          => myTableModel.fireTableRowsUpdated()     // 3) A row is from our TableModel is updated 
            => mJTable.tableChanged(e)               // 4) UPDATE on a sorted table, e.getFirstRow(), e.getLastRow() are correct

我发现3)中的后续UPDATE现在阻止JTable立即重新绘制并显示新行。
如果我阻止步骤3),则会立即绘制新线条。

任何想法为什么会如此?是否有必要在INSERT事件后主动避免UPDATE?

谢谢, 扬

0 个答案:

没有答案