Swing/ColumnModelPersistence の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ColumnModelPersistence へ行く。
- 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: https://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`で復元することでマウスドラッグによる列の入れ替え、幅の変更、カラム名の変更などを永続化しています。 - `JTableHeader`から`TableColumnModel`を取得して`XMLEncoder`で`XML`ファイルに保存 - 保存した`XML`ファイルを`XMLDecoder`で復元することでマウスドラッグによる列の入れ替え、幅の変更、カラム名の変更など復元 * 参考リンク [#reference] - [[JTableのモデルをXMLファイルで保存、復元する>Swing/PersistenceDelegate]] - [[JTableのSortKeyを永続化し、ソート状態の保存と復元を行う>Swing/SortKeyPersistence]] - [[JTableのColumn名を変更する>Swing/EditColumnName]] * コメント [#comment] #comment #comment