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

时间:2012-10-10 09:26:02

标签: java swing jtable

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

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

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

将数据添加到新创建的列中
summaryTableForVAriousSm.setValueAt("1000", 1, 1);

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

1 个答案:

答案 0 :(得分:3)

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

  

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

(由我加粗)

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

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

假设底层模型是DefaultTableModel

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