首页 > 解决方案 > 关于为什么在尝试抓取窗口大小时对象不会画圆的困惑

问题描述

所以,我在一堂课上制作了一个窗格

@Override //Overridden nerd
public void start(Stage primaryStage) {

    //makes a ball
    Ball ball = new Ball();

    //pause and resume animation
    ball.setOnMousePressed(e -> ball.pause());
    ball.setOnMouseReleased(e -> ball.play());

    //increase/decrease speed
    ball.setOnKeyPressed(e-> {
    if(e.getCode() == KeyCode.UP) {
        ball.increaseSpeed();
    }
    else if (e.getCode() == KeyCode.DOWN) {
        ball.decreaseSpeed();
        }
    });

    //creating a scene and setting its background
    Scene scene = new Scene(ball, 500, 500);
    primaryStage.setTitle("Random Walker");
    primaryStage.setScene(scene);
    primaryStage.show();

    ball.requestFocus();
    }

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

我试图让动画从窗格的中心开始球,然后从墙上反弹(我还没有在反弹部分,所以我知道这还不完美,但我正在尝试)

我的问题是,当我尝试让球从当前大小的窗口中绘制出来时,它根本不会绘制任何东西,但是如果我手动输入默认屏幕尺寸,它就会起作用。任何见解都会很棒,因为我一直在努力寻找任何方法来做到这一点,谢谢。

public class setup extends Application {

    @Override //Overridden nerd
    public void start(Stage primaryStage) {

    //makes a ball
    Ball ball = new Ball();

    //pause and resume animation
    ball.setOnMousePressed(e -> ball.pause());
    ball.setOnMouseReleased(e -> ball.play());

    //increase/decrease speed
    ball.setOnKeyPressed(e-> {
    if(e.getCode() == KeyCode.UP) {
        ball.increaseSpeed();
    }
    else if (e.getCode() == KeyCode.DOWN) {
        ball.decreaseSpeed();
        }
    });

    //creating a scene and setting its background
    Scene scene = new Scene(ball, 500, 500);
    primaryStage.setTitle("Random Walker");
    primaryStage.setScene(scene);
    primaryStage.show();

    ball.requestFocus();
    }

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

标签: javafxjavafx-8

解决方案


推荐阅读