当前位置: 首页 > 知识库问答 >
问题:

JTable不更新数据

谢俊悟
2023-03-14

出于某种原因,当这个JTable被调用时,它没有任何变化(这个方法在用户提交SQL查询后更新JTable)。

给定:验证数据向量和列名称向量是否正确填充。JTable 是一个私有类变量。

private void updateData() {
    updateDataVariables();
    table = new JTable(dataVector, columnNamesVector)
    {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public Class getColumnClass(int column)
        {
            for (int row = 0; row < getRowCount(); row++)
            {
                Object o = getValueAt(row, column);

                if (o != null)
                {
                    return o.getClass();
                }
            }

            return Object.class;
        }
    };
}

有什么想法吗?

共有2个答案

袁奇玮
2023-03-14

您需要告诉JTable,模型中的数据已经通过触发适当的事件进行了更新。

看这个教程

翟柏
2023-03-14

将对象与引用变量混淆是初学者的常见谬误,但您需要了解它们是非常不同的。当你称之为:

table = new JTable(dataVector, columnNamesVector) {.....

您正在创建一个新的JTable对象并让table变量引用它,但这对GUI显示的JTable对象(表变量之前引用的对象)没有影响。因此,您正在更改引用变量的属性,但保持原始对象不变。

解决方案:您不应该创建新的JTable,而是应该创建一个新的TableModel,然后将该TableModel放入现有的可视化JTable中。您可以通过对表格调用< code>setModel(newModel)来更改表格的模型。

编辑:或者正如沃尔夫卡斯尔所指出的,您可以更新现有的TableModel,而不是重新创建一个。

 类似资料:
  • 问题内容: 我对/ 有问题。我的数据表未刷新/更新。我正在使用,根据代码,一切都很好,并且没有任何错误。我也有一个带有分页的表,这就是为什么我使用动作监听器和按钮“上一个”和“下一个”的原因。我正在从其他函数传递到在is中的类中编码的函数 。问题是我填充了包含表数据的数组,但是表不会更新/刷新它。这是我的代码。谢谢前进。 大编辑 旧代码已删除。我添加了新代码,可以帮助您了解我的问题。希望这会有所帮

  • 我找到了更新数据的示例,但它使用了DefaultTableModel。当我创建自己的TableModel和自己的data类时,当我将数据添加到JTable中时,它不会更新。 有我的桌子模型: 当我添加了任何信息,但它没有更新。在JTable中,我必须把这个方法放在哪里来进行正确的数据更新?

  • 我现在迷路了。

  • 这个问题可能已经得到了回答,我读过很多类似的,但对我不起作用。因此,我的具有扩展的自定义表模型。我的数据是和列名。那么,当我的数据发生更改时,如何更新表呢?我一直在使用,它正在工作,但它将我的自定义单元格呈现器重置为默认值。谢了。

  • 我试图让我的JTable显示对扩展AbstractTableModel的TableModel所做的更改。我创建了一个堆来插入所有文档,然后在我的堆数组上应用了一个堆排序,所以这个有序的数组应该是我的TableModel数据。它看起来是这样的: 在方法中,当我调用时,堆内部数组将被销毁,它返回一个和有序节点。因此,当有一个带有节点的有序数组时,我的JTable不会显示数据。现在,如果我不执行,而是从

  • 我正在处理的程序包含两个类,GUI和DatabaseHelper。使用的表模型是DefaultTableModel。 GUI包含一个简单的JTable。它在启动时使用来自DatabaseHelper的数据初始化。这管用。 然而,当尝试将新数据加载到表中时,就不是那么直接了当了。 到目前为止,我的做法是: 现在发生的情况是,加载的数据被附加到已经存在的JTable上。 如果可能的话,我希望实现一个仅