2

我有一个带有预定义模型的 JTable

如何要求模型在特定位置插入特定列?

所以我想要类似的东西:DefaultTableModel.insertRow(int,Object[]) for columns

4

4 回答 4

8

没有像 Def​​aultTableModel.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);
于 2012-01-01T15:56:46.373 回答
4

是否真的需要TableModel在特定索引处添加列?您可以更轻松地调整视图 () 中的列顺序,JTable如 javadoc 类中所述JTable

默认情况下,JTable 中的列可能会重新排列,以便视图的列以与模型中的列不同的顺序出现。这根本不影响模型的实现:当列重新排序时,JTable 在内部维护列的新顺序并在查询模型之前转换其列索引。

这是通过使用该JTable#moveColumn方法来实现的。

向您添加一列DefaultTableModel已完成调用该DefaultTableModel#addColumn方法

于 2012-01-01T15:34:17.527 回答
0

使用 DefaultTableModel:

最后必须打电话fireDataChanged。只有一个addColumn有几个重载。这不是障碍,因为显示顺序是独立的。可以将一列移动到另一个位置,并且必须注意视图索引!=列索引。要在添加列后立即获得正确的视图索引,必须访问 JTable 并调用moveColumn.

我发现有时创建一个新的 TableModel 并分配它更容易。或者不使用 DefaultTableModel。

于 2012-01-01T15:37:20.900 回答
-1

此链接可能会有所帮助 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);
  }
于 2012-11-22T07:55:40.053 回答