swingを使ったことが無かったので練習がてら単語帳を作った。というかo石に作らされた。

zipファイル → http://shokai.org/archive/java/Dictionary1.21.zip

適当なクラス図(インタフェースの実現ってこれで合ってるの?)



んでXMLEncoderとXMLDecoderってのを使ってみて便利だったのでメモ

*XMLEncoder (任意のクラスの状態をXML形式で保存)

-java.beans.XMLEncoder (http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/beans/XMLEncoder.html)

>>

// ファイル名 fileName にwordSetの状態を保存する

try {

XMLEncoder xenc = new XMLEncoder(new BufferedOutputStream(new FileOutputStream( fileName ))); // XMLファイルを開く

xenc.writeObject(this.treeSet); // treeSetの状態をXMLとして保存

xenc.close(); // 閉じる

} catch (Exception e) { // 例外処理

System.out.println(“Exception : ” + e);

} finally {

System.out.println(“XML出力完了”);

}

<<

*XMLDecoder (XMLファイルを読んで任意のクラスの状態を復元)

-java.beans.XMLDecoder (http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/beans/XMLEncoder.html)

>>

// ファイル名 fileName からtreeSetの状態を復元する

try {

XMLDecoder xdec = new XMLDecoder(new BufferedInputStream(new FileInputStream( fileName ))); // XMLファイルを開く

this.treeSet = (TreeSet) xdec.readObject(); // treeSetの状態をXMLファイルから復元

xdec.close(); // 閉じる

} catch (Exception e) { // 例外処理

System.out.println(“Exception : ” + e);

this.wordSet = new WordSet(); // コンストラクト

} finally {

System.out.println(“XML入力完了”);

}

<<

こんな感じで。

辞書アプリでは、TreeSetを継承したWordSetというのを作り、それを丸ごと保存するようにした。

印刷もサポートできるようにしたい

*追記

XMLDecoder, XMLEncoderは適当なgetterとsetterが必要ぽい