Problema com "flickering" em applet (JApplet)

Boa noite,

[color=blue](EDIÇÃO: Eu enviei este tópico para o fórum errado; deveria estar em “Interface Gráfica”.)[/color]

Eu sou iniciante em Java, e novo neste fórum. Portanto, eu não sei se a pergunta está confusa, ou se há alguma informação importante faltando.

Eu estou tentando criar um applet em Java com gráficos e animação, utilizando a classe JApplet.

O método init do applet basicamente adiciona botões (JButton) à tela, e, para a animação, inicializa um objeto do tipo Image e um objeto do tipo Graphics, no qual serão desenhados os gráficos antes de serem desenhados na tela:

public class applet extends JApplet implements ActionListener, Runnable {
//...
Image image;
Graphics graphics;
public void init() {
        image = createImage( WIDTH, HEIGHT );
        graphics = image.getGraphics();
        //...
}
//...

Há um thread (utilizando a classe Runnable, para agir como temporizador) que chama o método repaint() a cada 10 milissegundos.
Os métodos paint e update são o seguinte:

    public void paint( Graphics g ) {
        super.paint(g);
        update( g );
    }

    public void update( Graphics g ) {
        graphics.setColor( Color.white );
        graphics.fillRect(0, 0, WIDTH, HEIGHT);
        // comandos para desenhar gráficos no objeto graphics
        //...
        // o comando abaixo desenha o gráfico do objeto graphics na tela do applet
        g.drawImage( image, 0, 40, this );
    }

O meu problema é o seguinte:
Como se pode observar, o applet está usando o método de buffer duplo (inserir os gráficos em um buffer antes de desenhá-los na tela). Isso deveria tornar a animação contínua, sem piscar (“flickering”). No entanto, ocorre “flickering”.
Removendo a linha “super.paint(g)”, o “flickering” deixa de ocorrer e a animação fica bem contínua, mas isso atrapalha o desenho dos botões na tela. Os botões não são desenhados corretamente, e estão se comportando de modo estranho.
Como evitar o “flickering” sem comprometer o desenho dos outros componentes do applet (botões, etc.)?

Obrigado.

http://www.pontov.com.br/site/index.php/java/48-java2d/124-desenho-direto-active-rendering

Outra coisa, o paint sobrescreve o desenho de TODO o applet. Mova o desenho para o canvas, ou para um JComponent, e deixe os botões fora do canvas.

Também é bom você ler esse artigo:
Ponto V! - O loop de animação

E os demais do site. Será muito esclarecedor.

Bem observado, movi o tópico para o fórum certo.

[quote=ViniGodoy]http://www.pontov.com.br/site/index.php/java/48-java2d/124-desenho-direto-active-rendering

Outra coisa, o paint sobrescreve o desenho de TODO o applet. Mova o desenho para o canvas, ou para um JComponent, e deixe os botões fora do canvas.[/quote]
Boa noite,
Eu movi o desenho para um canvas e funcionou.

Você está usando o double buffering através do BufferStrategy, como descrevi no artigo?

Ele tem vantagens em relação à usar uma imagem diretamente como você fez, como a possibilidade de fazer Page Flipping, caso a máquina suporte.