Swing/ColumnModelPersistence のバックアップ差分(No.4)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ColumnModelPersistence へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
---
category: swing
folder: ColumnModelPersistence
title: TableColumnModelをXMLファイルで保存、復元する
tags: [JTable, JTableHeader, TableColumnModel, XMLEncoder, XMLDecoder]
author: aterai
pubdate: 2015-12-14T02:58:18+09:00
description: JTableのヘッダからTableColumnModelを取得し、XMLEncoderとXMLDecoderを使って、XMLファイルで保存、復元します。
image: https://lh3.googleusercontent.com/-3ZhmTqRFkgU/Vm2uUZ4_gCI/AAAAAAAAOI4/bY9IRX-guT4/s800-Ic42/ColumnModelPersistence.png
hreflang:
href: http://java-swing-tips.blogspot.com/2016/01/save-and-load-state-of-jtable-and.html
lang: en
---
* 概要 [#summary]
`JTable`のヘッダから`TableColumnModel`を取得し、`XMLEncoder`と`XMLDecoder`を使って、`XML`ファイルで保存、復元します。
#download(https://lh3.googleusercontent.com/-3ZhmTqRFkgU/Vm2uUZ4_gCI/AAAAAAAAOI4/bY9IRX-guT4/s800-Ic42/ColumnModelPersistence.png)
* サンプルコード [#sourcecode]
#code(link){{
class TableColumnModelPersistenceDelegate extends DefaultPersistenceDelegate {
@Override protected void initialize(
Class<?> type, Object oldInstance, Object newInstance, Encoder encoder) {
super.initialize(type, oldInstance, newInstance, encoder);
DefaultTableColumnModel m = (DefaultTableColumnModel) oldInstance;
for (int col = 0; col < m.getColumnCount(); col++) {
Object[] o = {m.getColumn(col)};
encoder.writeStatement(new Statement(oldInstance, "addColumn", o));
}
}
}
}}
* 解説 [#explanation]
上記のサンプルでは、`JTableHeader`から`TableColumnModel`を取得し、`XMLEncoder`で`XML`ファイルに保存、`XMLDecoder`で復元することで、マウスドラッグによる列の入れ替え、幅の変更、`JPopupMenu`(右クリックなど)を開いての名前変更などを永続化することができます。
* 参考リンク [#reference]
- [[JTableのモデルをXMLファイルで保存、復元する>Swing/PersistenceDelegate]]
- [[JTableのSortKeyを永続化し、ソート状態の保存と復元を行う>Swing/SortKeyPersistence]]
- [[JTableのColumn名を変更する>Swing/EditColumnName]]
* コメント [#comment]
#comment
#comment