Swing/ColumnModelPersistence のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/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ファイルで保存、復元します。
概要
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
(右クリックなど)を開いて名前変更を永続化することができます。