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が必要ぽい