🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #29218

Re: Pintar desde fuera del metodo Paint

#29218
From: Alberto S. H.
Date: Thu, 29 Jan 1998 00:00
52 lines
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-mail
References: <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