1

次の 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 日と表示されています - どうすれば修正できますか?

4

1 に答える 1

1

よくわかりませんが、yyyy/MM/dd - HH:mm のように指定された形式で Date オブジェクトを表示したい場合は、Renderer を試してみませんか?

于 2012-08-28T15:40:33.843 に答える