我需要有关repaint()函数的帮助。当我运行程序时,它会产生图像闪烁效果。怎么了?

public class Game extends JFrame {
    private static final long serialVersionUID = 1L;

    public Game() {
    }

    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(Toolkit.getDefaultToolkit().getImage("Images/bg.jpg"),0,0,this);
        g.drawImage(Toolkit.getDefaultToolkit().getImage("Images/player.png"),0,448,this);
        repaint();
    }

    public static void main(String[] args) {
        Game langas = new Game();
        langas.setSize(900,550);
        langas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        langas.setTitle("Best Game EVER! LOL");
        langas.setVisible(true);
        langas.setLocationRelativeTo(null);
        langas.setResizable(false);
    }
}


对不起,我的英语不好,如果我的代码看起来很愚蠢,对不起,我是初学者。

最佳答案

您编写了无休止的递归,因为:

repaint呼叫paint,后者呼叫repaint,呼叫paint,...

您陷入了重画循环,因此图像闪烁。

09-09 20:49