JTable不更新数据

时间:2013-05-13 01:41:09

标签: java sql swing jtable

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

吉文斯: 验证dataVector和columnNamesVector是否正确填充。 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 个答案:

答案 0 :(得分:4)

将对象与参考变量混淆是一个常见的初学者的谬论,但你需要明白它们是截然不同的。当你这样称呼时:

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

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

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

编辑:或者正如wolfcastle所说,你可以更新现有的TableModel,而不是重新创建一个。

答案 1 :(得分:2)

你需要告诉JTable模型中的数据是通过触发适当的事件来更新的。

请参阅此tutorial