Article View: es.comp.lenguajes.java
Article #29218Re: Pintar desde fuera del metodo Paint
From: Alberto S. H.
Date: Thu, 29 Jan 1998 00:00
Date: Thu, 29 Jan 1998 00:00
52 lines
3479 bytes
3479 bytes
Chano G�mez wrote: > No debes ejecutar el cuerpo principal del programa desde el m�todo paint(). El > m�todo paint() solo debe ejecutarse en dos casos: > * cuando el sistema determina que debe actualizarse la pantalla. > * cuando t� le dices al sistema que debe actualizarse la pantalla, porque > algo ha cambiado en la simulaci�n. En ese caso, debes llamar al m�todo repaint(). > Este m�todo hace que el sistema llame a paint() con el contexto gr�fico adecuado. > > Yo te sugiero que hagas lo siguiente: > * cuando el usuario pulse en el bot�n de "arranque" del programa, crea un > thread encargado de realizar la simulaci�n. Cada vez que el thread determine que > es necesario refrescar la imagen, haz que llame al m�todo repaint() del applet. > > �C�mo sabe paint() lo que debe pintar? Hay dos m�todos. > * el estado de la simulaci�n est� almacenado en una serie de variables que el > m�todo paint() puede leer para redibujar todo. En este caso, cada llamada a > paint() consumir� bastante CPU, dependiendo de lo complicado de la imagen. > * el thread que hace la simulaci�n tiene una imagen oculta sobre la que hace > todos los dibujos y actualizaciones. Cada vez que se ejecuta paint(), coges esta > imagen oculta y la vuelcas en pantalla. De esa forma, el m�todo paint() consta de > una �nica l�nea: la llamada a Graphics.drawImage(). Este es el m�todo de "doble > buffer" del que hablaba Jorge Baez en su mensaje anterior. Creo que es el m�s > recomendable, pero todo depende del programa, lo r�pida que sea la simulaci�n, > etc. > > Un saludo. > > Chano. Si, lo que dices esta muy bien, pero he tenido la oportunidad de "destrozar" el codigo de una simulacion con una idea similar a la mia y la hacian como tu dices, creando un hilo que se encargase de la simulacion y aquello era un desastre. Habia una dessincronizacion entre por donde iba el Thread y por donde iba el Paint que no habia manera de entenderla. No obstante, voy a intentarlo. Yo por lo que llamaba a la simulacion desde Paint era porque de otra forma, lo que yo mandaba pintar a la pantalla no aparecia. Haciendola desde el metodo Paint, le paso como parametro el contexto grafico y solo asi cuando le digo pintaProceso, me hace lo que quiero. �Se puede hacer esto desde otro sitio? Por que yo lo he intentado y no me ha salido. Por llamar a la simulacion desde Paint Este no devuelve el control hasta que esta ha acabado con lo que no me es posible decirle que se pare si el usuario pulsa el boton habilitado para esto. Estoy intentando que los del departamento de informatica de mi Facultad me den elpacio para ir enganchando las simulaciones que llebamos hechas a la red y asi podais ver mejor mis problemas. Gracias.
Technical Details
Message-ID:
<34D06744.F9F0A873@lettera.skios.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<34C88CEC.C1CE4E42@madnetro.com> <6ai9ce$k2v$1@eubuf21.eu.concert.net> <34CDA7D7.8BF2848D@lettera.skios.es> <34CE5603.A29BD644@ran.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,25919fe04c94ccf4 X-Google-Attributes: gid1116f3,public From: "Alberto S. H." <asanjuan@lettera.skios.es> Subject: Re: Pintar desde fuera del metodo Paint Date: 1998/01/29 Message-ID: <34D06744.F9F0A873@lettera.skios.es> X-Deja-AN: 320268996 Content-Transfer-Encoding: 8bit References: <34C88CEC.C1CE4E42@madnetro.com> <6ai9ce$k2v$1@eubuf21.eu.concert.net> <34CDA7D7.8BF2848D@lettera.skios.es> <34CE5603.A29BD644@ran.es> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Organization: Centro Informatico Cientifico de Andalucia Newsgroups: es.comp.lenguajes.java