如何在JTable中的特定位置插入列

时间:2012-01-01 15:24:35

标签: java swing jtable defaulttablemodel

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

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

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

4 个答案:

答案 0 :(得分:4)

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

  

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

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

调用DefaultTableModel#addColumn方法

完成向DefaultTableModel添加列

答案 1 :(得分:3)

没有像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);

答案 2 :(得分:0)

使用DefaultTableModel:

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

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

答案 3 :(得分:-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);
  }