0

データベースのテーブルのデータで満たされたJTableがあり(したがって、ResultSetTableModelを使用しました)、JTableの1つの列をクリックすると、TableRowSorterを使用して行が並べ替えられます。データは問題なくjTableに表示されます。

しかし、JTableを列テーブルで並べ替え(たとえば、主キー値で並べ替える)、並べ替えられたjTableからセルを編集すると、変更される値は、列の順序付けの前にその位置にあった古いセルです。 。

例: nameageの2つの列を持つテーブルがあるとします。私のテーブルには次のデータがあります。

c 1
b 2
a 3

JTableで名前でiを注文すると、次のようになります。

a 3
b 2
c 1

値「1」を編集すると、編集後、表は次のようになります。

a 1
b 2
c 1

JTableで位置が更新されていないようで、元の位置を考慮して値が編集されています。

4

1 に答える 1

2

まず、データは実際にはモデルに含まれており、jtable は単なるビューであることに注意してください。通常、デフォルトでは、jtable の行と列はテーブルの行と列に対応しています。並べ替えると、jtable の行と列の間のこのマッピングは同じままではない可能性があるため、セル(rowVal,colVal) などを編集する場合は、次のようにします。

table.setValueAt(object,table.convertRowIndexToModel(rowVal),convertColumnIndexToModel(colVal))

これにより、ソート後にマッピングが保持されます。http://java.sun.com/docs/books/tutorial/uiswing/components/table.htmlのソートとフィルタリングのセクションをお読みください。

于 2010-04-28T21:33:19.017 に答える