java - 选择时JTable不更新

标签 java jtable

当我在 JTable 中选择一行时,我的 JTable 不再更新。 当我不选择行时,下面的代码将按预期工作。一行已添加到 JTable 中。

    @Override
public void update (Observable arg0, Object arg1)
{
    if (arg0 instanceof Logger)
    {
        LogItem last = systemController.logController.getLog().getLastLogItem();
        this.history.add(last);
        this.logTableModel.addItem(last);

        this.logTable.tableChanged(new TableModelEvent(this.logTableModel));
        ((DefaultTableModel)this.logTable.getModel()).fireTableStructureChanged();
        this.logTable.repaint();
        this.logTable.doLayout();
    }

}

当我关闭窗口并重新打开它时,我可以看到新行。

有人可以解释一下为什么在选择一行后,我在 JTable 中看不到任何更新吗?

最佳答案

您的代码存在许多问题。您不应该调用 fireTableStructureChanged,因为这与表结构(列数等)相关,而不是表数据本身的更改(添加行、更改单元格值等)。此外,您不需要在表本身上调用 repaint 和 doLayout,因为这应该由模型更改触发。

我认为你应该看看How to Use Tables从 Java 教程中,专门了解如何使用表模型、监听数据更改以及触发数据更改事件。

关于java - 选择时JTable不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/652507/

相关文章:

java - 减小 JTable 单元格中自定义渲染组件的大小

java - ManyToOne 单向禁用约束

即使下一个标记似乎适合数据类型,Java 扫描器也会抛出 InputMismatchException

java - 创建一个选定初始元素的表格

java - 当使用 TableCellRenderer 以 dd.mm.yyyy 格式显示本地日期时,我的 JTable 搜索功能无法按预期工作

java - 具有 2 个不同数据的 JTable

java - 用数字 1000-9999 填充链接列表

Java:在方法内部查找对象引用

java - java中计算特定字符的数量

java - 将 ArrayList 制作成 JTable