只有一个对象会渲染到屏幕

Only one object will Render to Screen

我正在努力使两个方块都出现在 JFrame 上,但只有一个是我在 main 方法 apperas 中最后制作的一个,而另一个则没有。已经尝试解决这个问题大约 3 个小时了,想砸碎我的电脑屏幕。任何帮助都是极好的。谢谢。

public class Main extends JFrame{

static Main main;
static Enemy square, square2;
Render render;

Main(){

    render = new Render();

    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,500);
    setResizable(false);
    add(render);
}

public void render(Graphics2D g){

    square.render(g);
    square2.render(g);
}

public static void main(String [] args){

    main = new Main();

    square2 = new Square(300,50);
    square = new Square(50,50);
}


}

.....

public class Render extends JPanel {

public void paintComponent(Graphics g){
    super.paintComponent(g);

    Main.main.render((Graphics2D)g);

}
}

......

public class Enemy {

public static int x,y;

Enemy(int x, int y){
    this.x = x;
    this.y = y;

}

public void render(Graphics2D g){

}
}

.......

public class Square extends Enemy {

Square(int x, int y){
    super(x,y);
}

public void render(Graphics2D g){

    g.setColor(Color.red);
    g.fillRect(x, y, 50, 50);

}
}

静态变量属于class而不是对象。 对 Enemy 位置使用静态变量意味着如果您创建 Enemy class 的任何实例,它们将共享相同的静态 x、y。你有 2 个正方形,但它们总是在彼此之上。

public static int x, y; 更改为 public int x, y; 应该可以解决您的问题。