只有一个对象会渲染到屏幕
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;
应该可以解决您的问题。
我正在努力使两个方块都出现在 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;
应该可以解决您的问题。