Swing/UserObjectPersistence のバックアップ(No.10)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/UserObjectPersistence へ行く。
- 1 (2016-04-25 (月) 19:05:46)
- 2 (2016-05-19 (木) 20:51:07)
- 3 (2017-08-03 (木) 15:40:25)
- 4 (2018-08-07 (火) 14:38:38)
- 5 (2020-08-11 (火) 15:16:01)
- 6 (2022-01-05 (水) 08:27:48)
- 7 (2025-01-03 (金) 08:57:02)
- 8 (2025-01-03 (金) 09:01:23)
- 9 (2025-01-03 (金) 09:02:38)
- 10 (2025-01-03 (金) 09:03:21)
- 11 (2025-01-03 (金) 09:04:02)
- category: swing folder: UserObjectPersistence title: JTreeのノードに追加したJCheckBoxのチェック状態の保存と復元 tags: [JTree, JCheckBox, XMLEncoder, XMLDecoder] author: aterai pubdate: 2016-04-25T00:07:44+09:00 description: JTreeのノードに追加したJCheckBoxのチェック状態など保持するUserObjectを永続化可能になるよう設定し、その保存と復元を行います。 image:
Summary
JTree
のノードに追加したJCheckBox
のチェック状態など保持するUserObject
を永続化可能になるよう設定し、その保存と復元を行います。
Screenshot
Advertisement
Source Code Examples
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, KotlinExplanation
上記のサンプルでは、JTreeのすべてのノードにJCheckBoxを追加するなどで使用しているチェックボックス付きJTree
を、そのチェック状態も含めて永続化を行っています。
JTree
のDefaultTreeModel
やDefaultMutableTreeNode
はデフォルトでXMLEncoder
に対応UserObject
として名前とチェック状態を保持するCheckBoxNode
クラスはXMLEncoder
に未対応なのでDefaultPersistenceDelegate
で書き出し保存するプロパティを指定- チェック状態を表す
Status
は列挙型(Enum
)で作成しているためXMLEncoder
はデフォルトで永続化に対応public
なクラスにしておく必要がある
- 親ノードなどのチェック状態を更新する
TreeModelListener
は永続化していないのでXMLDecoder
でDefaultTreeModel
を復元後に再度addTreeModelListener(...)
で設定し直す必要がある