如何动态添加列并使用java swing中的数据填充新添加的列

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

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

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

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

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

将数据设置为第一列的原因是两列都映射到基础模型中的同一列。 请参阅TableColumn()的api doc:

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

(由我加粗)

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

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

假设底层模型是DefaultTableModel

 ((DefaultTableModel) table.getModel()).addColumn(somename);