JTable不使用repaint()方法更新添加的行

时间:2012-07-24 05:12:04

标签: java swing jtable

在我的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没有得到更新 请注意 - >数据Vector具有所需的行,包括添加的行

1 个答案:

答案 0 :(得分:4)

您的addTableRow方法还应触发一个事件,指示已添加该行以提醒JTable此更改。然后就不需要repaint来电。

例如,查看addRow的{​​{1}}方法的实现:

DefaultTableModel

您可以清楚地看到事件被触发,并且不需要重新绘制。这在JTable tutorial

中有更详细的解释