Buffering (Graphics)

Ola Pessoal,

Estou com uma duvida com relacao ao Buffering nas aplicacoes Graficas2D. Eu estou desenvolvendo uma aplicacao grafica utilizando JPanel. Todos os movimentos graficos sao mostrados neste JPanel. Utilizando uma maquina mais lerda (celeron 256RAM) os movimentos ficam “malucos”… mas em uma maquina rapida (Duo 2GigaRam) eu nao tenho nenhum problema na minha aplicacao. Com esse problema na maquina lerda eu andei pesquisando na internet sobre isso… e encontrei varias informacoes sobre bufferizacao em aplicacoes para Applet que nao eh o meu caso. A partir dessa info. eu comecei a pesquisar para aplicacoes utilizando JPanel… Encontrei algumas informacoes… mas sinceramente nao consegui entender e nem achar um exemplo simples. Sera que alguem tem alguma informacao sobre isso??? Sera q implementando essa bufferizacao a minha aplicacao vai rodar bem na maquina lerda??? Se alguem tiver um exemplo simples e puder postar o codigo ficarei grato.

Basicamente a ideia do buffer em applet eh (http://www.if.ufrgs.br/~betz/jaulas/aula7o.htm):
Mesmo nos casos nos quais a imagem precisa ser inteiramente repintada a cada passo da animação, o método update precisa ser sobre-escrito para obter uma animação de boa qualidade. Isto porque a operação de limpar e repintar continuamente a imagem, se feita diretamente sobre a tela do computador, produz uma tremulação no mínimo desagradável. A solução, chamada “bufferização dupla” consiste em utilizar uma imagem auxiliar “fora da tela”, para fazer a operação de limpeza e repintagem. Esta imagem é transferida para a tela quando estiver pronta. A imagem auxiliar é uma instância da classe Image do pacote java.awt, criada através de uma chamada ao método createImage da componente gráfica. O método drawImage do contexto gráfico da tela é usado para transferir a imagem para a mesma. Eis o código que deve ser incluído na componente gráfica para tanto:

[code]
private Image offScreenImage; // imagem auxiliar declarada na classe

public void update( Graphics g )
{
// Criar a imagem auxiliar e buscar o seu context gráfico
if( offScreenImage == null )
offScreenImage = createImage( getSize().width, getSize().height );
Graphics offScreenGraphics = offScreenImage.getGraphics();
// limpar a imagem auxiliar
offScreenGraphics.setColor( getBackground() );
offScreenGraphics.fillRect( 0, 0, getSize().width, getSize().height );
// pintar a imagem auxiliar
offScreenGraphics.setColor( g.getColor() );
paint( offScreenGraphics );
// transferir a imagem auxiliar para a tela
g.drawImage( offScreenImage, 0, 0, this );
offScreenGraphics.dispose();
} [/code]

Abracos.