事前定義されたモデルを持つ JTable があります
モデルに特定の列を特定の位置に挿入するように依頼する方法は?
だから私は次のようなものが欲しい:列の DefaultTableModel.insertRow(int,Object[])
事前定義されたモデルを持つ JTable があります
モデルに特定の列を特定の位置に挿入するように依頼する方法は?
だから私は次のようなものが欲しい:列の DefaultTableModel.insertRow(int,Object[])
行を挿入するための 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);
}