Swing/SortKeyPersistence のバックアップソース(No.4)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/SortKeyPersistence へ行く。
--- category: swing folder: SortKeyPersistence title: JTableのSortKeyを永続化し、ソート状態の保存と復元を行う tags: [JTable, RowSorter, XMLDecoder, XMLEncoder] author: aterai pubdate: 2015-09-21T01:26:03+09:00 description: JTableのSortKeyを永続化して、そのソート状態をXMLファイルで保存、復元できるように設定します。 image: https://lh3.googleusercontent.com/-x9GESOvXeyc/Vf7c-CY1veI/AAAAAAAAOCE/lUO7hcq8-fw/s800-Ic42/SortKeyPersistence.png --- * 概要 [#summary] `JTable`の`SortKey`を永続化して、そのソート状態を`XML`ファイルで保存、復元できるように設定します。 #download(https://lh3.googleusercontent.com/-x9GESOvXeyc/Vf7c-CY1veI/AAAAAAAAOCE/lUO7hcq8-fw/s800-Ic42/SortKeyPersistence.png) * サンプルコード [#sourcecode] #code(link){{ 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()); //... }} * 解説 [#explanation] 上記のサンプルでは、`JTable`のソート状態を表す`RowSorter.SortKey`を永続化するため、以下のような設定を行っています。 - `RowSorter.SortKey`クラスのコンストラクタの引数をプロパティ名として`DefaultPersistenceDelegate`を作成 - `RowSorter.SortKey`クラスを`XML`で書き出すため、`XMLEncoder#setPersistenceDelegate(...)`で上記の`PersistenceDelegate`を設定 - 注: -- `TableModel`は、別途、[[JTableのモデルをXMLファイルで保存、復元する>Swing/PersistenceDelegate]]を使用 -- このサンプルでは、カラムヘッダの幅や順序には対応していない --- メモ: [http://wiki.byte-welt.net/wiki/JTable_Inhalte_speichern JTable Inhalte speichern – Byte-Welt Wiki] --- または、[[TableColumnModelをXMLファイルで保存、復元する>Swing/ColumnModelPersistence]]のような`DefaultPersistenceDelegate`を使ってカラムヘッダの幅や順序を保存する方法がある * 参考リンク [#reference] - [[JTableのモデルをXMLファイルで保存、復元する>Swing/PersistenceDelegate]] - [[TableColumnModelをXMLファイルで保存、復元する>Swing/ColumnModelPersistence]] * コメント [#comment] #comment #comment