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.