我如何以编程方式从另一个方法单击JavaFX中的按钮?

Dyl*_*ard 10 java javafx button

我有一个侦听器类,它连接到我的手机,以接收来自名为TouchOSC的应用程序的输入.在那个课程中,只要按下手机上的按钮,我就可以调用方法.我需要做的是当我的计算机从手机接收输入时,单击一个JavaFX按钮以触发该方法中的事件.我怎么会触发那样的东西?

jew*_*sea 29

button.fire()

当用户手势指示应发生此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);
    }
}
Run Code Online (Sandbox Code Playgroud)

样本的输出是:

Clicked 1 times.
Clicked 2 times.
Clicked 3 times.
Clicked 4 times.
Run Code Online (Sandbox Code Playgroud)

  • 适合我.除非我误解了您的问题,否则您的代码中可能还有其他一些问题,导致其无法按预期运行. (5认同)
  • @DylanLeeBlanchard:小心实现 button.setOnAction()。我犯了一个错误,我在 button.setOnMouseClicked() 上实现了事件处理程序。 (2认同)