web-dev-qa-db-ja.com

別のメソッドからJavaFXのボタンをプログラムでどのようにクリックしますか?

TouchOSCと呼ばれるアプリケーションから入力を受け取るために、電話にネットワーク接続されているリスナークラスがあります。そのクラスでは、電話のボタンを押すたびにメソッドを呼び出すことができます。私がする必要があるのは、コンピューターが電話から入力を受信するたびに、JavaFXボタンをクリックしてそのメソッドでイベントをトリガーすることです。どのように私はそのようなことを引き起こしますか?

11

button.fire()

ユーザーのジェスチャーがこのButtonBaseのイベントが発生することを示しているときに呼び出されます。

ボタンが発生すると、ボタンの onAction イベントハンドラーが呼び出されます。

ボタンが呼び出されるたびに呼び出されるボタンのアクション。これは、ユーザーがマウスでボタンをクリックしたか、タッチイベントか、キーを押すか、または開発者がプロ​​グラムでfire()メソッドを呼び出したことが原因である可能性があります。

サンプルコード

ボタンを作成し、自動的に4回起動します。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;

import Java.io.IOException;
import Java.util.stream.IntStream;

public class RapidFire extends Application {
    private static int nClicks = 0;

    @Override
    public void start(Stage stage) throws IOException {
        // setup button and action handler.
        Button button = new Button("Click Me!");
        button.setOnAction(event -> {
            nClicks++;
            System.out.println("Clicked " + nClicks + " times.");
        });
        button.setPadding(new Insets(10));
        button.setPrefWidth(100);

        // show the button.
        stage.setScene(new Scene(button));
        stage.show();

        // fire the button a few times in succession.
        IntStream.range(0, 4).forEach(
                i -> button.fire()
        );
    }

   public static void main(String[] args) {
        launch(args);
    }
}

サンプルの出力は次のとおりです。

Clicked 1 times.
Clicked 2 times.
Clicked 3 times.
Clicked 4 times.
29
jewelsea