如何动态添加列并使用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);