2

事前定義されたモデルを持つ JTable があります

モデルに特定の列を特定の位置に挿入するように依頼する方法は?

だから私は次のようなものが欲しい:列の DefaultTableModel.insertRow(int,Object[])

4

4 に答える 4

8

行を挿入するための 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);
于 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 の場合:

最後に を呼び出す必要がありますfireDataChangedaddColumnいくつかのオーバーロードを持つのみがあります。表示順は独立しているので支障はありません。列を別の位置に移動する可能性があり、ビュー インデックス != 列インデックスを処理する必要があります。列を追加した直後に正しいビュー インデックスを取得するには、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 に答える