簡単なテキスト・エディタ

java.awt,java.ioパッケージを活用してテキストエディタを作成してみます。 あっけないほど簡単にできてしまうので、きっと驚かされるでしょう。
アプリケーションの本体のクラス名は TextEditor です。 このクラスは次のようなコンポーネントからできています。


本体(Panel)-+-サブパネル1(Panel)-+-ロードボタン(Button)
            |                    +-セーブボタン(Button)
            |                    +-ファイル名入力アイテム(TextField)
            |                    +-クリアボタン(Button)
            |
            |-テキスト表示アイテム(TextArea)
            |
            +-サブパネル2(Panel)-+-メッセージ表示アイテム(Label)

TextEditorは Frameではなく Panelのサブクラスとして設計されています。 従って、 さらに大規模なアプリケーションの内部にその一部として組み込むことができます。 単独で起動すると main() メソッド内で独自に ExitableFrame (第6週参照)を生成し、その内部に自分自身のオブジェクトをレイアウトします。

TextEditorはファイルの読み込み(load)と書き出し(save)の両方の機能を持ちます。 読み込みのみの機能を持つクラスとして FileViewerを用意しました。 TextEditorは FileViewerのサブクラスとして実現されていますが、 FileViewerも単独のアプリケーションとして起動することができます。
Buttonのアクション処理は、TextEditor,FileViewerとも innerクラスとして Adapterのクラスを用意しています。 それぞれの名前は FileViewer$ClearAdapter, FileViewer$LoadAdapter, TextEditor$SaveAdapter です。
ファイルの読み込み、書き出しの機能はウィンドウコンポーネントとは 独立のクラスで実現されています。 それぞれ FileLoader, FileSaver という名前のクラスです。 FileLoader と FileSaver は他のアプリケーションでも再利用可能です。 利用しやすいように、FileLoader.loadText() および FileSaver.saveText()は static メソッドとして用意しました。
ファイルの読み込み処理、書き出し処理に発生したエラーを 専門に取り扱うために、それぞれ FileLoaderException, FileSaverException という public な Exception のクラスも用意しました。


ExitableFrame ------- FileViewer ----------- TextEditor
                       |                      |
                       + FileLoader           + FileSaver
                       |                      |
                       + FileLoaderException  + FileSaverException
                       |                      |
                       + LoadAdapter          + SaveAdapter
                       |
                       + ClearAdapter

ソースファイル