2017-07-25 32 views
3

私はJavaFXの初心者です。さまざまなタイプのイベントハンドラがあることがわかります。 JavaFXのMouseEvent、ActionEvent、Eventの違いは何ですか?JavaFXのMouseEvent、ActionEvent、Eventの違いは何ですか?

+0

あなたの質問にはJavaFX 2が表示されています.JavaFXを初めて使用する人は、旧式のJavaFX 2ではなく最新のバージョン(現在はJava 8以上)を使用してください。 – jewelsea

答えて

3

Eventは、すべてのイベントタイプのスーパークラスです。

サンプルイベントの種類は次のとおりです。キーが押されたときに生成される

  • KeyEvents
  • MouseEventsであり、移動やボタンのクリックなどのマウス操作によって生成されます。
  • さらに多くのことがあります。

JavaFXシステムでイベントを生成する必要はありません。必要に応じて独自のcustom eventsを発行して使用することができますが、通常、ほとんどのイベントはJavaFXシステムによって生成されます。

ActionEventは、アクティベートされているものにコード化して応答することを容易にする種類のイベントです。

多くの場合、1つのアクションに対して複数のイベントが生成されます。例えば、マウスでボタンをクリックすると、ActionEventに加えてMOUSE_PRESSEDMOUSE_RELEASEDMOUSE_CLICKEDのイベントが発生する可能性があります。

ボタンのアクティブ化に応答する場合は、MOUSE_CLICKEDイベントをリッスンできますが、これはお勧めできません。これは、ボタンをアクティブにする他の方法があるか、ボタンを無効にしてその場合にアクションを実行したくないためです。デフォルトのボタンの場合は、ENTERキーを押してボタンをトリガーするか、ユーザーがボタンにフォーカスしているときにスペースキーを押してボタンをアクティブにできます。ボタンがキーボードによってアクティブ化されている場合、関連するマウスイベントはないため、マウスのアクティブ化のためのマウスイベントのリスンは推奨されません。通常は、ボタンがアクティブになっていて、何が原因ではないかを知りたいだけで、起動を引き起こす可能性があるすべてのイベントタイプを監視したくない場合、イベントがトリガされたときに実際にどのような条件でアクティベーションを行う必要があります。

JavaFXは、ボタンのアクティブ化に使用されたメソッドにかかわらず、ボタンがアクティブになるたびに発行されるActionEventを提供します。これにより、コードを書くのがはるかに簡単になります。書く必要があるのはbutton.setOnAction(event -> handleButtonAction());です。

ActionEventは、キーフレームがアクティブになったときにアニメーションKeyFrameなどの特定のタイプのイベントを作成する価値がない、または必要でない場所でも使用されます。したがって、ActionEventはボタンイベントを処理するためだけに使用されるのではなく、多くの場所で使用される可能性があります。

関連する問題