如何以编程方式从另一种方法单击JavaFX中的按钮?
我有一个侦听器类,它与我的手机联网,以接收来自名为TouchOSC的应用程序的输入。在该类中,只要我按下手机上的按钮,我就可以调用方法。我需要做的是单击 JavaFX 按钮,以便在计算机收到来自手机的输入时在该方法中触发事件。我该如何触发这样的事情?
我有一个侦听器类,它与我的手机联网,以接收来自名为TouchOSC的应用程序的输入。在该类中,只要我按下手机上的按钮,我就可以调用方法。我需要做的是单击 JavaFX 按钮,以便在计算机收到来自手机的输入时在该方法中触发事件。我该如何触发这样的事情?
当用户手势指示应发生此 ButtonBase 的事件时调用。
触发按钮时,将调用按钮的 onAction
事件处理程序。
按钮的操作,每当按钮被触发时都会调用。这可能是由于用户用鼠标单击按钮,或者通过触摸事件,或者通过按键,或者开发人员以编程方式调用fire()方法。
示例代码
创建一个按钮并自动将其触发四次。
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.