Swing/UserObjectPersistence のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/UserObjectPersistence へ行く。
- title: JTreeのノードに追加したJCheckBoxのチェック状態の保存と復元
tags: [JTree, JCheckBox, XMLEncoder, XMLDecoder]
author: aterai
pubdate: 2016-04-25T00:07:44+09:00
description: JTreeのノードに追加したJCheckBoxのチェック状態など保持する
UserObject
を永続化可能になるよう設定し、その保存と復元を行います。
概要
JTreeのノードに追加したJCheckBoxのチェック状態など保持するUserObject
を永続化可能になるよう設定し、その保存と復元を行います。
Screenshot
Advertisement
サンプルコード
try {
File file = new File("output.xml");
try (XMLEncoder xe = new XMLEncoder(
new BufferedOutputStream(new FileOutputStream(file)))) {
xe.setPersistenceDelegate(
CheckBoxNode.class,
new DefaultPersistenceDelegate(new String[] {"label", "status"}));
xe.writeObject(tree.getModel());
}
} catch (IOException ex) {
ex.printStackTrace();
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTreeのすべてのノードにJCheckBoxを追加するなどで使用しているチェックボックス付きJTree
を、そのチェック状態も含めて永続化を行っています。
JTree
のDefaultTreeModel
やDefaultMutableTreeNode
は、デフォルトでXMLEncoder
に対応UserObject
として名前とチェック状態を保持するCheckBoxNode
クラスはXMLEncoder
に未対応なので、DefaultPersistenceDelegate
で書き出し保存するプロパティを指定- チェック状態を表す
Status
はEnum
でXMLEncoder
はデフォルトで対応public
なクラスにしておく必要がある
- 親ノードなどのチェック状態を更新する
TreeModelListener
は、永続化していないので、XMLDecoder
でDefaultTreeModel
を復元後に再度addTreeModelListener
で設定し直す必要がある
参考リンク
- JTableのSortKeyを永続化し、ソート状態の保存と復元を行う
- JTreeのすべてのノードにJCheckBoxを追加する
- JTreeの展開状態を記憶・復元する?