0

在我的 UI 中,我使用带有 TableModel 的 JTable。在实现的 Observer 接口的更新方法中,我正在调用重绘方法。删除操作在添加行时立即发生,它没有更新,但在切换时会更新通过标签(它调用另一个方法而不是重绘)

这是更新方法的代码:

 public void update(Observable o, Object arg) {
        ((MyTableModel)table_.getModel()).addTableRow(row);

    //addTable(row) adds the  row to the dataVector that populates the JTable
    //the dataVector is updated with added row

            table_.repaint();

            }

我想知道为什么 JTable 没有得到更新请注意-> 数据向量具有所需的行,包括添加的行

4

1 回答 1

4

您的addTableRow方法还应该触发一个事件,指示该行已被添加以提醒JTable此更改。那么就不需要repaint打电话了。

举个例子看一下addRow方法的实现DefaultTableModel

public void insertRow(int row, Vector rowData) {
    dataVector.insertElementAt(rowData, row);
    justifyRows(row, row+1);
    fireTableRowsInserted(row, row);
}

您可以清楚地看到触发了一个事件,并且不需要重新绘制。这一切都在JTable教程中更详细地解释

于 2012-07-24T05:34:01.080 回答