1

を使用してJTableいますが、その列の移動を許可する必要があります。しかし、問題が発生します。再配置すると、コンテンツとタイトルのみが変更されたようになります。ただし、インデックスも変更する必要があります。

これをより明確にするために、例を示します。私の最初の列が「名前」と呼ばれているとしましょう。'setName()'メソッドを呼び出すときは、列がどこにあっても、名前は常にその列に移動する必要があります。しかし、最初の列ではありません..あなたが私のポイントを得たことを願っています!

必要なメソッドを書き終えました。完成したメソッドに触れることなくこれを達成する方法があることを願っています。

どんな助けでも大歓迎です!!!

4

2 に答える 2

6

これをより明確にするために、例を示します。私の最初の列が「名前」と呼ばれているとしましょう。'setName()'メソッドを呼び出すときは、列がどこにあっても、名前は常にその列に移動する必要があります。しかし、最初の列ではありません..あなたが私のポイントを得たことを願っています!

データを変更したい場合は、基礎TableModelを直接変更するだけです。列の順序は、で変更されることはありません。これらの列が再順序付けされるTableModelのは、ビュー()でのみです。JTable

テーブルを確認したい場合は、@ MadProgrammerで説明したように、使用可能なJTable#convertColumnIndexToModel(view-> model JTable#convertColumnIndexToView)メソッドと(model-> view)メソッドを使用して、「view-coordinates」から「model-coordinates」に変換する必要があります。 。

コメントの1つで述べたように、のsetValueAtメソッドを更新しないでください。TableModel前に述べTableModelたように、は列の順序を変更しないため、setValueAtは常に「モデル座標」で呼び出す必要があります。したがって、これらを変換する必要はありません。

于 2012-07-27T06:28:25.467 に答える
4

そうそう、私はこれが大好きです、それはいつも私を手に入れます;)

JTable.convertColumnIndexToModel(int viewColumnIndex)およびJTable.convertColumnIndexToView int modelColumnIndex)を確認してください

基本的に、列インデックスをビューインデックスとの間で変換する必要があります。

TableModelそれはあなたのために世話をしているので、あなたはこれについて心配する必要はありませんJTable

と同様の問題が発生しますRowSorter

于 2012-07-27T05:08:22.320 に答える