【问题标题】:JavaFX buttons click orderJavaFX 按钮点击顺序
【发布时间】:2017-06-12 11:58:12
【问题描述】:

所以我有 3 个按钮 - 红色、黄色和绿色。用户应该以正确的顺序点击它们——从红色到绿色。如果发生这种情况,它会说“OK”,如果没有,它会说“Wrong”之类的。我被卡住了,因为我不知道如何正确获得点击顺序。

这是我现在拥有的,但它不能正常工作。

@Override
public void start(Stage primaryStage) {

    VBox root = new VBox();

    Button b1 = new Button("Red");
    Button b2 = new Button("Yellow");
    Button b3 = new Button("Green");

    root.getChildren().add(b1);
    root.getChildren().add(b2);
    root.getChildren().add(b3);

    Scene scene = new Scene(root);

    primaryStage.setTitle("Traffic");
    primaryStage.setScene(scene);
    primaryStage.sizeToScene();
    primaryStage.show();

    b1.setOnAction((ActionEvent t) -> {
        b2.setOnAction((ActionEvent t1) -> {
            b3.setOnAction((ActionEvent t2) -> {
                System.out.println("OK");
            });
        });
    });

}

【问题讨论】:

  • 请提供您尝试过的代码,以便我们提供帮助。

标签: java button javafx


【解决方案1】:

只需跟踪下一个按钮:

private Button nextButton ;

@Override
public void start(Stage primaryStage) {

    VBox root = new VBox();

    Button b1 = new Button("Red");
    Button b2 = new Button("Yellow");
    Button b3 = new Button("Green");

    nextButton = b1 ;

    root.getChildren().add(b1);
    root.getChildren().add(b2);
    root.getChildren().add(b3);

    Scene scene = new Scene(root);

    primaryStage.setTitle("Traffic");
    primaryStage.setScene(scene);
    primaryStage.sizeToScene();
    primaryStage.show();

    b1.setOnAction((ActionEvent t) -> {
        if (nextButton==b1) {
            nextButton=b2 ;
        } else {
            System.out.println("Wrong");
        }
    });

    b2.setOnAction((ActionEvent t1) -> {
        // etc
    });

    b3.setOnAction((ActionEvent t2) -> {
        // etc
    });

}

【讨论】:

    【解决方案2】:

    制作 3 个布尔变量,每个按钮一个。
    例如:redButtonPressed、yellowButtonPressed、greenButtonPressed。
    全部初始化为false。

    然后,当按下红色按钮时,将 redButtonPressed 设置为 true。 按下黄色按钮时:

    if (redButtonPressed){
    yellowButtonPressed = true;
    } else {
    print "Wrong!";
    }
    

    对于绿色按钮,按下时:

    if(redButtonPressed && yellowButtonPressed){
    print "OK";
    } else {
    print "Wrong!";
    }
    

    在打印“错误”之后,我认为应该将所有布尔值设置为 false。

    【讨论】:

    • 我需要打印出来。
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多