我有一个带有预定义模型的 JTable
如何要求模型在特定位置插入特定列?
所以我想要类似的东西:DefaultTableModel.insertRow(int,Object[]) for columns
我有一个带有预定义模型的 JTable
如何要求模型在特定位置插入特定列?
所以我想要类似的东西:DefaultTableModel.insertRow(int,Object[]) for columns
没有像 DefaultTableModel.insertRow() 这样的用于插入行的 insertColumn 方法。为了在特定位置插入一列,您必须使用 DefaultTable.addColumn() 附加该列,然后将新列移动到所需位置。
JTable table = new JTable(rows, cols);
table.setAutoCreateColumnsFromModel(false);
DefaultTableModel model = (DefaultTableModel)table.getModel();
TableColumn col = new TableColumn(model.getColumnCount());
col.setHeaderValue(headerLabel);
table.addColumn(col);
model.addColumn(headerLabel.toString(), values);
table.moveColumn(table.getColumnCount()-1, vColIndex);
是否真的需要TableModel
在特定索引处添加列?您可以更轻松地调整视图 () 中的列顺序,JTable
如 javadoc 类中所述JTable
默认情况下,JTable 中的列可能会重新排列,以便视图的列以与模型中的列不同的顺序出现。这根本不影响模型的实现:当列重新排序时,JTable 在内部维护列的新顺序并在查询模型之前转换其列索引。
这是通过使用该JTable#moveColumn
方法来实现的。
向您添加一列DefaultTableModel
已完成调用该DefaultTableModel#addColumn
方法
使用 DefaultTableModel:
最后必须打电话fireDataChanged
。只有一个addColumn
有几个重载。这不是障碍,因为显示顺序是独立的。可以将一列移动到另一个位置,并且必须注意视图索引!=列索引。要在添加列后立即获得正确的视图索引,必须访问 JTable 并调用moveColumn
.
我发现有时创建一个新的 TableModel 并分配它更容易。或者不使用 DefaultTableModel。
此链接可能会有所帮助 http://www.roseindia.net/java/example/java/swing/InsertColumn.shtml
public void positionColumn(JTable table,int col_Index) {
table.moveColumn(table.getColumnCount()-1, col_Index);
}