我有一个带有预定义模型的JTable
如何让模型在特定位置插入特定列?
所以我想要类似的东西:DefaultTableModel.insertRow(int,Object [])用于列
答案 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);
}