JApplet - super.paint ();вызывает мерцание - PullRequest
1 голос
/ 10 августа 2011

Я пишу JApplet прямо сейчас, и всякий раз, когда я вызываю super.paint (), апплет мерцает.Я использую двойную буферизацию (рисование изображения, а затем рендеринг этого изображения), но я думаю, что super.paint () очищает экран или что-то в этом роде, побеждая мой двойной буфер.использовать paintComponents (), но по какой-то причине, когда я вызываю «currentScreen.Draw (g)», он не показывает рисование экрана.

Может кто-нибудь помочь мне с этим?*

Метод рисования экрана

public void Draw(Graphics g)
{

    if(buffer != null)
        g.drawImage(buffer, 150, 0, null);
    //g.drawString(drawstring, x, y);
}

1 Ответ

4 голосов
/ 10 августа 2011

Не используйте краску и не рисуйте прямо в JApplet. Вместо этого нарисуйте метод JPCelel paintComponent и вызовите super.paintComponent (g) в качестве первой строки этого метода. Добавьте этот JPanel в contentPane вашего JApplet, чтобы позволить апплету отображать его.

Редактировать 1
Также вы не можете использовать paintComponent s для этого, поскольку это делает что-то совершенно другое. Снова используйте paintComponent, но только в компоненте, производном от JComponent, таком как JPanel (или сам JComponent).

Редактировать 2 Также всегда ставьте @Override над вашим методом paintComponent, чтобы быть уверенным, что вы на самом деле переопределяете метод super.

...