2012-04-01 14 views
3

マウスクリックやキー押下を処理するクラスを作成するベストプラクティスの方法が何であるか不思議です。明らかに、Javaで複数のクラスを継承することはできません。その時点で私はMouseListenerとKeyListenerのインターフェイスを使用しています。つまり、実際にはkeyReleasedとmouseReleasedだけが必要なときにインターフェイスを満たすためにクラス内に空のメソッドをたくさん持たなければなりません。MouseAdapterとKeyAdapterの両方を '拡張する'必要があります

私がMouseAdapterとKeyAdapterを使用することができたら、私はこれらのメソッドを取り除き、よりクリーンなコードを得ることができました。だから私はすでに持っているものよりも厄介ではないこれらのクラスを使用する方法の任意の提案。

答えて

4

MouseAdapterを拡張拡張し、KeyListenerまたはKeyAdapterに優先してKey Bindingsを使用する(のIntelliJで、私は日食が相当しています仮定)「代表団による継承を置き換える」リファクタリングを使用し、1を拡張することができます。

6

Adapterクラスのいずれかを継承してから、もう一方のインターフェイスを実装できます。そうすれば、作業の約半分を行うだけです。

私はあなたの仕事を最小限に抑えるために、ほとんどの方法の適用範囲を提供するAdapterを使用することをお勧めします。

すでに他のものから継承している場合、明らかに2つのインタフェースを実装する以外に選択肢はありません。

2

あなたはその後、その後、他の

+0

+1です。 – trashgod

4

私は手足に出て、この機能を1つのクラスに組み合わせてはいけないと言っています。そのようにしようとすると、設計上の決定が悪い可能性があります。両方のコントロールクラスが同じモデルを共有している場合は、マウス操作を処理するクラスとキーボードの操作を処理するクラスを別々に作成してくださいtrashgod状態、彼に1+、 - KeyListenerではなくKey Bindingsを使用)。

+0

これが好ましい。共通の機能をカプセル化するために 'Action'を使います。 – trashgod