Мне нужна помощь с функцией 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);
    }
}

Извините за мой плохой английский и извините, если мой код выглядит глупо, я новичок.

0
Tadas 13 Авг 2014 в 20:35
"Программы Swing должны переопределять paintComponent() вместо того, чтобы переопределять paint()." - Рисование в AWT и Swing: методы рисования .
 – 
trashgod
13 Авг 2014 в 20:39
Я тестировал эту функцию. Я хочу знать, как это работает.
 – 
Tadas
13 Авг 2014 в 20:39
Иногда ты просто теряешь дар речи.
 – 
Kayaman
13 Авг 2014 в 20:52
Справедливо
 – 
Zac
15 Авг 2014 в 00:27

1 ответ

Лучший ответ

Вы написали бесконечную рекурсию, потому что:

repaint вызывает paint, который вызывает repaint, который вызывает paint, ...

Вы попали в цикл перерисовки, поэтому изображение мерцает.

2
blueygh2 13 Авг 2014 в 20:40
Ох ... Теперь я это понимаю. Спасибо :).
 – 
Tadas
13 Авг 2014 в 20:44