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

时间:2016-10-04 08:01:22

标签: java swing render paintcomponent

我试图让它成为两个正方形出现在JFrame上,但只有我在主方法中出现的最后一个而另一个没出现。一直试图弄清楚这个约3个小时,想要粉碎我的电脑屏幕。任何帮助都是极好的。谢谢。

C

.....

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){

}
}

1 个答案:

答案 0 :(得分:2)

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

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