0

fileNamedate modifiedの 2 つの列を持つJTableがあります。最初の列にname Stringを追加し、2 番目の dateTime 列に追加しました。new Date(tempFile.lastModified())

dateTime 列を文字列としてレンダリングしましたnew SimpleDateFormat("MM/dd/yy HH:mm:ss")

私も有効にしました m_listTbl.setAutoCreateRowSorter(true);

しかし、変更日列のソート結果は正しくありません。

ここに画像の説明を入力

どうしてこれなの?まだ独自のソーターを作成する必要がありますか?

編集:

ほとんどすべての余分なコードをコメントアウトし、日付文字列でレンダリングされなかった後、次の結果が得られました。デフォルトでは、JTable JavaでDateオブジェクトをごとにソートしているようです。コードの何が問題なのかを確認するために、さらにテストします。 ここに画像の説明を入力

EDIT2

私はテストして理解しました。getColumnClass() メソッドをオーバーライドせずに DefaultTableModel を使用すると、Date 列または Number 列で問題が発生します。

4

1 に答える 1

0

EDIT2:もちろんです。にリンクされた jtable で同じ問題が発生した場合tablemodel、この問題は の列値 (EDIT2) に関連付けられたクラスが原因であることを確認できますtableModel。驚いたことに、完全な型の Date がDefaultTableModelpublic Object をオーバーライドするときにサブクラスで返されたとしても、 Date 列はクラス Object でしたgetValueAt(int row, int col)

getColumnClass回避策は、 のサブクラスでオーバーライドすることですDefaultTableModel。そうしないと、日付列を並べ替えると、日付のオブジェクトで並べ替えが行われ、奇妙な結果になります。

于 2013-01-03T08:33:27.653 に答える