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

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

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

浮云间 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贡献1794条经验 获得超8个赞

如果我对你的理解是正确的,你可以使用时间轴来改变圆圈的颜色,并在按下按钮时停止。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
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号