我首先创建了一个包含单列和6行(空列)的Jtable(thru netbeans GUI)。接下来,我使用以下命令动态添加了一列
summaryTableForVAriousSm.getColumnModel().addColumn(new TableColumn());
在运行应用程序时,我可以看到该列是动态创建的。所以我想使用命令
将数据添加到新创建的列中summaryTableForVAriousSm.setValueAt("1000", 1, 1);
(类似于所有其他6行填写列) 此更改也反映在应用程序的运行中,但此处的问题是插入新创建的列中的数据也会在列0中被覆盖(如果存在任何数据)。为什么一列中的更改正在另一列中反映出来。另外,如何将它们分开,以便一列中的更改不会影响其他列中的数据。
答案 0 :(得分:3)
将数据设置为第一列的原因是两列都映射到基础模型中的同一列。请参阅TableColumn()的api doc:
使用默认模型索引为0,默认宽度为75,空渲染器和空编辑器
(由我加粗)
现在表格的setValueAt位于视图坐标中,内部转换为模型坐标。对于列基本上通过查询其modelIndex:
// in JTable.setValueAt
int modelColumnIndex = getColumnModel().getColumn(viewColumn).getModelIndex()
假设底层模型是DefaultTableModel
((DefaultTableModel) table.getModel()).addColumn(somename);