Swing/ColumnModelPersistence のバックアップ(No.12)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ColumnModelPersistence へ行く。
- 1 (2015-12-14 (月) 03:16:54)
- 2 (2016-01-28 (木) 17:57:22)
- 3 (2017-06-29 (木) 12:57:28)
- 4 (2018-02-24 (土) 19:51:30)
- 5 (2018-07-01 (日) 00:26:02)
- 6 (2018-10-10 (水) 22:47:02)
- 7 (2020-10-06 (火) 14:49:07)
- 8 (2022-07-14 (木) 10:39:57)
- 9 (2025-01-03 (金) 08:57:02)
- 10 (2025-01-03 (金) 09:01:23)
- 11 (2025-01-03 (金) 09:02:38)
- 12 (2025-01-03 (金) 09:03:21)
- 13 (2025-01-03 (金) 09:04:02)
- 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: https://java-swing-tips.blogspot.com/2016/01/save-and-load-state-of-jtable-and.html lang: en
Summary
JTable
のヘッダからTableColumnModel
を取得し、XMLEncoder
とXMLDecoder
を使って、XML
ファイルで保存、復元します。
Screenshot

Advertisement
Source Code Examples
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, KotlinExplanation
JTableHeader
からTableColumnModel
を取得してXMLEncoder
でXML
ファイルに保存- 保存した
XML
ファイルをXMLDecoder
で復元することでマウスドラッグによる列の入れ替え、幅の変更、カラム名の変更など復元