次の 3 つの列で構成されるテーブルがあります。日時 | 説明
日時の値は、実際にはデータベース テーブルと (古いデータベース - 変更できないため、回避する必要がある) の 2 つの個別のフィールドに格納されます。
次のコードが適用されています。
tbNotes.setAutoCreateRowSorter(true); //tbNotes is the JTable
DefaultRowSorter sorter = ((DefaultRowSorter) tbNotes.getRowSorter());
ArrayList list = new ArrayList();
list.add(new RowSorter.SortKey(2, SortOrder.DESCENDING)); //column 2 because I have an invisible ID column
sorter.setSortKeys(list);
sorter.sort();
生成された結果は正しく表示されます。行は日付順にソートされ、古いアイテムが下に表示されます。しかし、時々私はこれを見ます:
並べ替えが文字列の最初の文字を見て、1 が 0 より大きいと想定していることは明らかです。
JTable を日付で適切に並べ替えるにはどうすればよいですか?
ありがとうございました
PSJTableにデータを入力するためのコードは次のとおりです
try {
DefaultTableModel noteDataModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
tbNotes.setModel(noteDataModel);
Object[] objects = new Object[4];
ListIterator<Todonote> todoNoteListIterator = noteList.listIterator();
while (todoNoteListIterator.hasNext()) {
todoNoteEntity = todoNoteListIterator.next();
DateFormat noteDateFormatter = new SimpleDateFormat("MM/dd/yyyy");
String noteDateTime = noteDateFormatter.format(todoNoteEntity.getUserDate())
+ " - " + todoNoteEntity.getUserTime().substring(0, 2) + ":" + todoNoteEntity.getUserTime().substring(2);
objects[0] = todoNoteEntity.getPrimaryKey();
objects[1] = todoNoteEntity.getUserContact().getName();
objects[2] = noteDateTime;
objects[3] = todoNoteEntity.getNotes();
noteDataModel.addRow(objects);
}
編集 1
テーブルモデルを更新しました
@Override
public Class getColumnClass(int column) {
for (int row = 0; row < getRowCount(); row++) {
Object o = getValueAt(row, column);
if (o != null) {
return o.getClass();
}
}
return Object.class;
}
現在は動作しているようですが、日付が yyyy/MM/dd - HH:mm ではなく 2012 年 10 月 26 日と表示されています - どうすれば修正できますか?