JavaFX button.arm()不起作用。还有其他方法吗?

时间:2013-12-04 10:30:39

标签: button javafx

我正在尝试自动按下我的应用程序中的按钮,以便它触发一个功能。

根据java docs.arm()按钮应该执行此操作。但事实并非如此。

我也试过.fire(),但没有运气。

关于如何获得按钮的任何想法都可以单独点击?

1 个答案:

答案 0 :(得分:2)

button.fire()有效,是用于触发按下自动按钮的正确方法。

以下是一个简短的示例,演示了它的用途:

auto click

启动时间轴,每秒自动触发一个按钮。当按钮被触发时,它会增加按钮下面的计数器标签。

import javafx.animation.*;
import javafx.application.Application;
import javafx.geometry.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Clicker extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Label counter = new Label("0");

        Button clicker = new Button("Auto-clicked");
        clicker.setOnAction(event ->
            counter.setText(
                (1 + Integer.parseInt(counter.getText())) + ""
            )
        );

        Timeline ticker = new Timeline(
            new KeyFrame(
                Duration.seconds(1), 
                event -> clicker.fire()
            )
        );
        ticker.setCycleCount(1_000_000);
        ticker.play();

        VBox layout = new VBox(10, clicker, counter);
        layout.setAlignment(Pos.CENTER);
        layout.setPadding(new Insets(10));

        stage.setScene(new Scene(layout));
        stage.show();
    }

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

}