Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Actionイベントについて

いつもお世話になってます。
以前、Mediatorパターンについて質問したのですが、なかなか自分でもうまく理解できなかったもので再度質問させていただきました。

Swingでアプリケーションを作成しているのですが、
例えば、パネルAとパネルBのクラスを作成し各パネルにボタンを設置します。
その際にActionListenerを設定するのですが、みなさんはActionListenerの実装内容を同クラス内(パネルAやパネルB)で行っているのでしょうか?
WEBや書籍でのサンプルは簡易的にするために同クラス内にActionListenerをimplementsしたクラスや無名クラスを実装しています。
ケースバイケースになるとは思うのですが、実際アプリケーションなどを作成する際はどう設計しているのかご教授願えませんでしょうか。

例えば、AbstractActionを継承したクラスを作成しそれをJButtonのコンストラクタにnewするなど色々とあると思います。

要はどうActionイベントを管理しているのかが知りたいのです。

質問の内容が分からない場合はすいません。

3

回答

4121

閲覧

3件の回答

評価

0

モノによるとしか言えないが。

例えば、似たような構造のボタンが並ぶ場合は、
大抵AbstractButtonを作ってListenerとして自分
を登録してる。
ハンドラの実装もAbstract内でやって、ボタンに
よって異なる部分を別のabstractメソッドに追い
出してる(これはTemplateだな)。
あくまで私は。何が主流かは知らない。

評価

0

$さんありがとうございます。

やはりやり方は色々とあるということですね。

>>例えば、似たような構造のボタンが並ぶ場合は、
大抵AbstractButtonを作ってListenerとして自分
を登録してる。

逆に構造が違うようなボタンは無名クラス等を使用しているのでしょうか?
すみませんがよろしくお願いします。

評価

0

無名クラスはあんまり使ってないな。
ボタンが1つ2つだったり、共通するロジックが皆無だったりする場合は、Swingでは親コンポーネントをListenerすることが多いかな。

無名クラスは、たとえばFileNameFilterみたいなreturn 1行で終わるものや、ArrayListを拡張した自前のリスト(無論あるクラス内でしか使わない)を持つ場合に使うことがある。

「この方が作りやすい」「この方が後々拡張しやすい」「この方が管理しやすい」「この方が見た目がいい」というような視点でも見てみよう。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。