java小球沿主对角线移动问题

img


为什么我用这一个编译出来的结果不是小球在移动而是直线慢慢的从左上角出来移动到右下角。

因为fr.setSize(400, 500);设置的窗口宽400,高500,而在g.fillOval(c++, d++, 50, 50); c和d一直是相等的,所以是沿着45度的方向移动,并没有按照对角线方向移动,这里的d需要根据c和窗口宽高来计算即可。即增加d = c * 500 / 400; 将d++修改为d。
代码修改后如下:

public void paint(Graphics g) {
    for (int i = 0; i < 400; i++) {
        g.clearRect(0, 0, a-1, b-1);
        g.setColor(Color.orange);
        d = c * 500 / 400;
        g.fillOval(c++, d, 50, 50);
        try {
            Thread.currentThread().sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        if (c >= a) a = 400;
        if (d >= b) b = 500;
    }
}

我在jdk17环境下是对角线运动的