1

さまざまなイベントを処理するとき、私の一般的なポリシーは、Javaによって提供される 適切なクラスを拡張する、などのxxxHandlerクラスを作成することでした。MouseHandlerWindowHandlerxxxAdapter

イベントの処理に関する他のテキストを調べていたところEventListener、たとえば、インターフェイスを拡張するときは常に、コンストラクターでメソッドを呼び出し、イベントが生成されるたび に呼び出すActionListener必要があると書かれています。enableEvents(AWTEvent e)super.processXXXEvent()

このアプローチは非常に紛らわしいと思います。これらのメソッドにはアクセス指定子がprotectedあるので、これらは内部使用のみであると思いますか?

  • それらの方法は正確には何ですか?
  • イベントを処理するために本当に必要ですか?
  • メソッドを呼び出さずにメソッド定義のイベントを処理するコードを追加する通常actionPerformed()の、などに比べて、何らかの利点がありますか? mouseMoved()super
  • ヘルプが必要です。技術的なジャンボジャンボではなく、単純な言葉が高く評価されています。

    4

    1 に答える 1

    1

    それらの方法は正確には何のためのものですか?

    このprocessEvent()メソッドは、発生するイベントのタイプをフィルタリングします。このメソッドのパラメーターはタイプAWTEventtypeです。フィルタリング後、このメソッドは、対応processXYZEvent()するイベントオブジェクトを受け取る対応するメソッドを呼び出します。

    例えば、processMouseEvent(MouseEvent)

    このprocessXYZEvent()メソッドは、イベントオブジェクトをハンドラーに渡すことにより、対応するリスナーにイベントについて通知します。

    たとえばprocessMouseEvent(MouseEvent)、登録されたマウスリスナーに通知します。

    メソッドは、メソッドenableEvents()に与えるイベントを決定しprocessEvent()ます。このメソッドはfinalであるため、オーバーライドできません。ただし、これはクラスのサブクラスでアクセスしComponentて、コンポーネントがサポートするイベントのタイプを決定できます。

    イベントを処理するために本当に必要ですか?

    それらの役割は上で述べられています。これは、イベントオブジェクトが作成およびディスパッチされたときにのみイベントを処理でき、それらのメソッドがこれを行うため、イベントの処理に必要であることを意味します。

    于 2013-07-31T15:58:12.757 に答える