为了账号安全,请及时绑定邮箱和手机立即绑定

如何在程序等待按下按钮时执行某些操作?

如何在程序等待按下按钮时执行某些操作?

浮云间 2022-09-22 10:30:47

我想一直更改CIRECLE颜色,计数器小于3,而我等待单击按钮。当圆环变红时,他需要按“停止”。这是程序:


public class Q1_2 extends Application {

    private MyCircle circle = MyCircle.getInstance();

    public int COUNTER;

    public Color CURRENT_COLOR;

    public Color currentColor;

    public static void main(String[] args) {

        launch();

    }

    @Override

    public void start(Stage primaryStage) throws Exception {

        circle.setRadius(100);

        RadioButton bColor = new RadioButton("Stop");

        COUNTER = 0;

        HBox box = new HBox(40, bColor);

        box.setPadding(new Insets(30));

        StackPane pane = new StackPane(circle, box);

        Scene scene = new Scene(pane, 500, 500);

        primaryStage.setScene(scene);

        primaryStage.show();

        bColor.setOnAction(e -> {

            if (bColor.isSelected() == true && currentColor != javafx.scene.paint.Color.RED) {

                COUNTER++;

                bColor.setSelected(false);

            }

            if (bColor.isSelected() == true && currentColor == javafx.scene.paint.Color.RED)

                System.out.println("GREAT");

        });

        while (COUNTER < 3) {

            currentColor = chooseColor();

            circle.setFill(currentColor);

            if (COUNTER == 3)

                System.out.println("YOU LOSE");

        }

    }

}

谢谢!


查看完整描述

1 回答

?
慕田峪9158850

TA贡献1464条经验 获得超7个赞

如果我对你的理解是正确的,你可以使用时间轴来改变圆圈的颜色,并在按下按钮时停止。Timeline


示例代码:


import java.util.Arrays;

import java.util.List;

import java.util.concurrent.atomic.AtomicInteger;

import javafx.animation.KeyFrame;

import javafx.animation.Timeline;

import javafx.application.Application;

import javafx.event.ActionEvent;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.layout.StackPane;

import javafx.scene.layout.VBox;

import javafx.scene.paint.Color;

import javafx.scene.shape.Circle;

import javafx.stage.Stage;

import javafx.util.Duration;


/**

 *

 * @author blj0011

 */

public class JavaFXApplication357 extends Application

{


    @Override

    public void start(Stage primaryStage)

    {

        List<Color> colors = Arrays.asList(Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW, Color.PURPLE);

        AtomicInteger counter = new AtomicInteger(0);

        Circle circle = new Circle(200, Color.TRANSPARENT);


        Timeline timeline = new Timeline(new KeyFrame(Duration.millis(300), (event) -> {

            circle.setFill(colors.get(counter.getAndIncrement() % colors.size()));

        }));

        timeline.setCycleCount(Timeline.INDEFINITE);

        timeline.play();


        Button btn = new Button();

        btn.setText("Stop");

        btn.setOnAction((ActionEvent event) -> {

            timeline.stop();

        });


        VBox root = new VBox(new StackPane(circle), new StackPane(btn));


        Scene scene = new Scene(root, 450, 450);


        primaryStage.setTitle("Hello World!");

        primaryStage.setScene(scene);

        primaryStage.show();

    }


    /**

     * @param args the command line arguments

     */

    public static void main(String[] args)

    {

        launch(args);

    }


}


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信