概要

JTableSortKeyを永続化して、そのソート状態をXMLファイルで保存、復元できるように設定します。

サンプルコード

File file = File.createTempFile("output", ".xml");
try (XMLEncoder xe = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(file)))) {
  xe.setPersistenceDelegate(
    RowSorter.SortKey.class,
    new DefaultPersistenceDelegate(new String[] {"column", "sortOrder"}));
  xe.writeObject(table.getRowSorter().getSortKeys());
//...
view all

解説

上記のサンプルでは、JTableのソート状態を表すRowSorter.SortKeyを永続化するため、以下のような設定を行っています。

  • RowSorter.SortKeyクラスのコンストラクタの引数をプロパティ名としてDefaultPersistenceDelegateを作成
  • RowSorter.SortKeyクラスをXMLで書き出すため、XMLEncoder#setPersistenceDelegate(...)で上記のPersistenceDelegateを設定

参考リンク

コメント

  • 大変勉強になります。JTableの列入替え(Drag&Drop操作による)の状態も保存することは可能なのでしょうか? -- hirohiro
    • @hirohiro さん、こんばんは。JTableの列入替えの状態を保存する場合、DefaultTableColumnModel用のDefaultPersistenceDelegateを作成してヘッダカラムの幅や順序を保存する方法があります(記事の解説も追加・修正しました)。 -- aterai
    • サンプルコード: DefaultTableColumnModelPersistenceDelegateTest.java
    • 他にも、JTable Inhalte speichern – Byte-Welt WikiのようにgettersetterDefaultTableColumnModelに追加してXMLEncoder/XMLDecoderする方法もあるようです。