Yo tuve ese mismo problema, lo que sucede es lo siguiente, cuando tu llamas al metodo repaint(); estas diciendo que te borre todo el lienzo y vuelva a dibujar cada uno de sus elementos..
, y por lo que necesitas no es necesario, para solucionarlo creas la siguiente variable:
Graphics nuevoG;
y en tu constructos añades ko siguiente:
setBackground(Color.white); // con eso tenemos fondo blanco
y cuando quieras dibujar usas:
nuevoG = getGraphics();
gc.setXORMode(getBackground()); //este codigo entre otras cosas lo usaremos para borrar solo un segmento del lienzo
es decir, si tu dibujas un punto negro
gc.drawfill(100,100,10,10); -> ejecutas
ahora copia dos veces la misma linea
que te quede asi...
gc.drawfill(100,100,10,10);
gc.drawfill(100,100,10,10); - ejecutas denuevo
vez q desaparece??
has el siguiente cambio
gc.drawfill(100,100,10,10);
gc.drawfill(105,105,10,10);
ES DECIR POR CADA ITERACCIÓN TIENES QUE HACER LOS SIGUIENTE
-DIBUJAR POSICIÓN ANTERIOR (PARA BORRAR)
-DIBUJAR POSICIÓN ACTUAL (PARA PINTAR)
CON ESTO HACEMOS AHORRO DE MEMORIA... porque no borramos todo el contenido del lienzo y la situación se vuelve mas amena... si quiers más info a mi mail.. oks.
[email protected]