Java GUI プログラミング Tips

備忘録兼ねて。

Javaの参考書やサンプルプログラミングは、
幾手数多出ており、一通りの事を実現するには十分と言える。

しかし・・・Javaはかねてより
”GUIプログラミングが苦手”
と言われてきている。
そのためか、サンプルプログラムを見ると、
Frame周り含めて、ごちゃごちゃとしたソースである事が多い。

絶対それじゃないと出来ないなんて事無いぞ!

というわけで、
もうちょっと「部品ごとにプログラムを纏める」事、「分離する」事について、
サンプル交えて紹介したいと思う。

ポイントは下記の3つだ。

  1. なんちゃらListenerをimplementsしたクラスなら、ぶっちゃけ何でも良し
  2. 部品のオブジェクトは、直接使わず、継承する(簡易的な使い方なら無視でもOK。JOptionPaneとか特に)
  3. 「似た動き」をするオブジェクトは基底クラスを用意する

ファイル数は増えるかもしれないが、
1ファイル毎のコード量が激減するため、見通しも良くなる。
オブジェクト指向ならではの動きを利用するといった形だ。
Visual StudioのMFC等で自動出力されるテンプレートとも似た形である。

では、実際に上記のポイントを押さえて「分離」をしてみよう。
本来であれば、クラス図も併用して示すべきではあるが・・・
冒頭で示したJavaSampクラスから、3クラス作成し、
合計で4クラスとなった。見易さが向上したと感じてもらえればありがたい。
(折りたたんでます。下記クリックで展開します)

  1. JavaSamp.java:フレーム部分、メインメソッド
  2. AButton.java:ボタン部品の基底クラス
  3. Button1.java:ボタン1クラス(extends AButton)
  4. Button2.java:ボタン2クラス(extends AButton)

何にせよ、
フレーム部分のプログラムコードからListenerやイベント処理が消えたのが
お分かりいただけるだろうか?
部品である、ボタンの処理はボタンに・・・
という形でGUIのオブジェクト内で纏める事が出来た。

実をいうと、フレーム部分も
「部品の定義」と「デザイン(配置)の定義」を継承なりなんなりで分離が可能だ。
是非とも一考して挑戦してみて欲しい。