jtable在对表执行update之后变为空?

ocebsuys  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(368)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我正在尝试编写一些软件,当用户向sql数据库添加新条目时,我的jtable显示数据库中的条目会更新。当前,当方法 updateTable(Object[][] data) 调用时,将导致表变为空。
有人知道这类问题的解决方法吗?
下面是该方法的代码:

/**
     * This method updates the JTable which shows the Amp Settings.
     *
     * @param data A 2D Array of Objects witch represents the data in the
     * database.
     */
    private void updateTable(Object[][] data)
    {
        // A new DefaultTableModel.
        DefaultTableModel dtm = new DefaultTableModel();

        // Looping over the data, create a new row and add it to the DataModel.
        for (int i = 0; i < data.length; i++)
        {
            Object[] row = new Object[data[i].length];

            // Fill the row's data.
            for (int j = 0; j < row.length; j++)
            {
                row[j] = data[i][j];
            }

            // Set the row in the table model.
            dtm.addRow(row);
        }

        // Set the model of the table to the newly created DefaultTableModel.
        table.setModel(dtm);

        ((AbstractTableModel) table.getModel()).fireTableDataChanged();
    }

下面是调用 updateTable() :

// Calls update table, SERVER.dbtoArray() returns a 2D Array of objects.
updateTable(SERVER.dbToArray());
slhcrj9b

slhcrj9b1#

DefaultTableModel dtm = new DefaultTableModel();

即使将数据添加到tablemodel中,也没有添加任何列名,因此表中有0列要显示。
您的代码应该类似于:

String[] columnNames = { "Column1", "Column2", "..." );
DefaultTableModel dtm = new DefaultTableModel(columnNames, 0);

或者更好的方法是:

DefaultTableModel dtm = (DefaultTableModel)table.getModel();
dtm.setRowCount(0);

这将保留现有列并只添加数据。
另外,您不需要重新创建行数组。在二维数组中已将数据作为一行:

for (int i = 0; i < data.length; i++)
{
    Object[] row = data[i];
    model.addRow( row );
}

相关问题