开发者社区> 问答> 正文

单击开始按钮时程序崩溃

我想用JavaFX做一个小游戏,但是当我单击开始按钮时,Java(TM)Platform SE二进制文件崩溃了!

package sample;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.effect.Bloom;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

import java.util.Random;


public class Main extends Application {

    @Override
    public void start(Stage primaryStage){

        Weiter weiter = new Weiter(true);
        Random rand = new Random();

        GridPane grid = new GridPane();
        grid.setAlignment(Pos.CENTER);
        grid.setVgap(10);
        grid.setHgap(10);
        grid.setPadding(new Insets(10, 10, 10,10));

        Rectangle ra = new Rectangle(120, 120);
        ra.setFill(Color.LIGHTBLUE);
        ra.setStroke(Color.BLACK);
        ra.setStrokeWidth(2);
        ra.setEffect(new Bloom());
        grid.add(ra, 1, 0);

        Button start = new Button("start");
       grid.add(start, 0, 3);

        TextField feld = new TextField();
        grid.add(feld, 1, 3);

        Button btnBest = new Button("ok");
        grid.add(btnBest, 3, 3);

        start.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {

                if (weiter.getWeiter()){

                   int wiedhol = rand.nextInt(101);

                   while (wiedhol == 0){

                       wiedhol = rand.nextInt(101);

                   }

                   System.out.println(wiedhol);

                   for(int i = 0; i <= wiedhol; i++){

                       try {

                           ra.setFill(Color.BLUE);

                           Thread.sleep(1000);

                           ra.setFill(Color.LIGHTBLUE);

                       }catch(InterruptedException ie){}

                   }

                }

            }
        });

        primaryStage.setScene(new Scene(grid, 400, 300));
        primaryStage.show();
    }


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

类别Weiter:

package sample;

public class Weiter {

    private boolean weiter;

    public Weiter(boolean wert){

        this.weiter = wert;

    }

    public boolean getWeiter(){

        return weiter;

    }

    public void setWeiter(boolean wert){

        this.weiter = wert;

    }

}

实际上,当我按下开始按钮时,它应该是一个随机数,并且矩形变为蓝色,直到达到随机数为止。那么您必须输入计算的数字,然后在正确的时候赢了。

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 21:31:05 336 0
1 条回答
写回答
取消 提交回答
  • 它不会崩溃。

    请注意:

    for(int i = 0; i <= wiedhol; i++){
    
        try {
    
            ra.setFill(Color.BLUE);
            Thread.sleep(1000);
            ra.setFill(Color.LIGHTBLUE);
    
        }catch(InterruptedException ie){}
    
    }
    

    这会thread.sleep()暂停您的程序。

    回答来源:Stack Overflow

    2020-03-26 21:31:48
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载