button.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
label.setText("Accepted");
}
});
上記のコードでは、ボタンを押したときに何が起こるかを定義しています。これで問題ありませんが、新しいActionListenerを作成して、ボタンに追加します。通常、JButtonでは、次のようにActionListenerを追加するだけです。
button.addActionListener(someControllerClass.createButtonListener());
上記のコードでは、createButtonListener()はActionListenerを返します。
私の質問は:JButton addActionListenerに相当するものは何ですか?
これが私のやり方だと思います。ハンドラーの作成:
public EventHandler<Event> createSolButtonHandler()
{
btnSolHandler = new EventHandler<Event>() {
@Override
public void handle(Event event) {
System.out.println("Pressed!");
biddingHelperFrame.getBtnSag().setVisible(false);
}
};
return btnSolHandler;
}
ボタンにハンドラーを追加:
btnSol.addEventHandler(MouseEvent.MOUSE_CLICKED, biddingHelperFrameController.createSolButtonHandler());
あなたがしたい場合EventHandler
を再利用し、 JavaFX Documentation で説明されているように定義します。
_EventHandler<ActionEvent> buttonHandler = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
label.setText("Accepted");
event.consume();
}
};
_
次の方法で、定義したbuttonHandler
をボタンのonAction
に追加できます。
_button.setOnAction(buttonHandler);
_
そして完全性のための削除オプションを提供するドキュメントから引用します:
コンビニエンスメソッドによって登録されたイベントハンドラーを削除するには、コンビニエンスメソッドにnullを渡します(例:
node1.setOnMouseDragged(null).
)。
あなたのための結果:
_button.setOnAction(null)
_
ドキュメントはさらに、特定のイベントのハンドラーを追加する方法の例をいくつか提供しています-それは良い読み物です。
まったく同じアプローチですが、ラムダ式を使用すると簡単です。
buttonSave.setOnAction(event -> buttonSaveClicked());