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:
hreflang:
href: http://java-swing-tips.blogspot.com/2016/01/save-and-load-state-of-jtable-and.html lang: en
概要
JTable
のヘッダからTableColumnModel
を取得し、XMLEncoder
とXMLDecoder
を使って、XML
ファイルで保存、復元します。
Screenshot
Advertisement
サンプルコード
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));
}
}
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTableHeader
からTableColumnModel
を取得し、XMLEncoder
でXML
ファイルに保存、XMLDecoder
で復元することで、マウスドラッグによる列の入れ替え、幅の変更、JPopupMenu
(右クリックなど)を開いての名前変更などを永続化することができます。