web-dev-qa-db-ja.com

ボタンにActionListenerを追加するJavafx

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に相当するものは何ですか?

7
MertG

これが私のやり方だと思います。ハンドラーの作成:

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());
1
MertG

あなたがしたい場合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)
_

ドキュメントはさらに、特定のイベントのハンドラーを追加する方法の例をいくつか提供しています-それは良い読み物です。

7
SSchuette

まったく同じアプローチですが、ラムダ式を使用すると簡単です。

buttonSave.setOnAction(event -> buttonSaveClicked());
0
D4NT3