3

マウスのクリックとキーの押下を処理する必要があるクラスを作成するためのベストプラクティスの方法は何でしょうか。明らかに、Javaで複数のクラスを継承することはできないため、現時点ではMouseListenerおよびKeyListenerインターフェースを使用しています。つまり、実際にkeyReleasedとmouseReleasedのみが必要な場合、インターフェースを満たすためにクラスに多くの空のメソッドが必要です。

MouseAdapterとKeyAdapterを使用できれば、これらのメソッドを削除して、よりクリーンなコードを作成できます。したがって、これらのクラスを使用する方法についての提案は、私がすでに持っているものよりも厄介ではありません。

4

4 に答える 4

6

Adapterクラスの1つから継承してから、他のインターフェースを実装することができます。そうすれば、作業の約半分を実行するだけで済みます。

Adapter作業を最小限に抑えるために、最も多くのメソッドカバレッジを提供するを使用することをお勧めします。

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

于 2012-04-01T00:47:51.313 に答える
4

またはに優先してキーバインディングを拡張MouseAdapterして使用します。KeyListenerKeyAdapter

于 2012-04-01T01:22:18.037 に答える
4

私は手足に出て、この機能を1つのクラスに結合しようとすべきではないと言います。そうしようとすると、設計上の決定が悪くなる可能性があります。両方が同じアクションを引き起こすためだと言う場合は、必ず両方のコントロールクラスに同じモデルを共有させますが、それ以外の場合は、マウスの操作を処理するクラスとキーボードの操作を処理するクラスを別々に作成します。 trashgodは、彼に1+と述べています-KeyListenerではなくKeyBindingsを使用しています)。

于 2012-04-01T02:08:25.813 に答える
2

一方を拡張してから、「委任による継承の置換」リファクタリングを使用して(Intellijでは、Eclipseに同等のものがあると思います)、もう一方を拡張できます。

于 2012-04-01T01:18:02.277 に答える