0

我首先创建了一个具有单列和 6 行(空列)的 Jtable(通过 netbeans GUI)。接下来我使用以下命令动态添加了一列

summaryTableForVAriousSm.getColumnModel().addColumn(new TableColumn());

在运行应用程序时,我可以看到该列是动态创建的。所以我想使用命令将数据添加到新创建的列

summaryTableForVAriousSm.setValueAt("1000", 1, 1);

(对于所有其他 6 行按列填充的情况类似)这种变化也反映在应用程序的运行中,但这里的问题是插入新创建的列中的数据也被第 0 列覆盖(如果存在任何数据) . 为什么一列中的更改会反映在另一列中。另外如何将它们分开,以便一列中的更改不会影响另一列中的数据。

4

1 回答 1

3

数据设置为第一列的原因是两列都映射到底层模型中的同一列。请参阅 TableColumn() 的 api 文档:

使用默认模型索引0、默认宽度 75、空渲染器和空编辑器

(被我加粗)

现在表格的 setValueAt 在视图坐标中,在内部转换为模型坐标。对于列,基本上通过查询其模型索引:

// in JTable.setValueAt
int modelColumnIndex = getColumnModel().getColumn(viewColumn).getModelIndex()

假设底层模型是 DefaultTableModel

((DefaultTableModel) table.getModel()).addColumn(somename);
于 2012-10-10T09:33:41.007 回答