我正在尝试在 JPanel
上绘制一些内容,但似乎我遇到了 paint
和 paintComponent
方法的问题。可能与双缓冲有关,但我不确定。 public void PaintComponent(Graphics g)
方法由于某种原因没有被调用,知道为什么吗?
这是我的代码:
@Override
public void paintComponents(Graphics g) {
super.paintComponents(g); //To change body of generated methods, choose Tools | Templates.
System.out.println("paintComponents!");
snakeHead.DrawSphere(g);
if(foodShoulBeRedrawn){
foodShoulBeRedrawn = false;
spawnFood();
}
if(shouldSpawnBodyPart){
shouldSpawnBodyPart = false;
snake.get(snake.size() - 1).DrawSphere(g);
}
//spawnSnake();
paintCalled = true;
repaint();
}
/*
@Override
public void paint(Graphics g) {
super.paint(g);
snakeHead.DrawSphere(g);
if(foodShoulBeRedrawn){
foodShoulBeRedrawn = false;
spawnFood();
}
if(shouldSpawnBodyPart){
shouldSpawnBodyPart = false;
snake.get(snake.size() - 1).DrawSphere(g);
}
//spawnSnake();
paintCalled = true;
repaint();
}
*/
最佳答案
你正在超越Container#paintComponents()
,它由您的 JFrame
继承。您不需要扩展 JFrame
,而是需要扩展 JPanel
因此您可以重写其 paintComponent()
和 getPreferredSize()
。然后您可以将面板add()
添加到JFrame
中,就像它们显示的here一样。和 here .
关于Java PaintComponents 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37789496/