tutorial example español ejemplos descargar componentes java swing awt

java - example - ¿Es seguro usar Component.repaint() fuera de EDT?



java swing pdf (3)

No puedo encontrar ninguna documentación oficial que indique que es seguro llamar a Component.repaint desde otro subproceso que el subproceso de distribución de eventos, el EDT.

¿Es esto así? ¿Y dónde puedo encontrar documentación / código?


Aquí hay una cita de una página oficial que dice que:

Los siguientes métodos JComponent son seguros para llamar desde cualquier hilo: repaint() , revalidate() e invalidate() . Los métodos repaint() y revalidate() cola solicitudes de la cadena de envío de eventos para llamar a paint() y validate() , respectivamente.

EDIT 1:

Dado que el enlace anterior mencionado se ha cambiado. Estoy publicando un nuevo enlace , aunque podría tomar un poco más de tiempo saber realmente la autenticidad de esta página, ya que parece ser de Java aunque se originó en el servidor de alguna University , como se puede ver en la barra de direcciones.


Es seguro para subprocesos. El RepaintManager garantiza que dichas llamadas se coloquen en el subproceso de envío de evento.

Pintura en AWT y Swing (documentación "oficial")

El objetivo de la clase RepaintManager de Swing es maximizar la eficiencia del proceso de repintado en una jerarquía de contención Swing, y también implementar el mecanismo de "revalidación" de Swing (este último será un tema para un artículo separado). Implementa el mecanismo de repintado al interceptar todas las solicitudes de repintar en componentes Swing (para que ya no sean procesados ​​por el AWT) y mantener su propio estado en lo que necesita actualizarse (conocido como "regiones sucias"). Finalmente, utiliza invokeLater() para procesar las solicitudes pendientes en el hilo de envío del evento, como se describe en la sección sobre "Repaint Processing" (opción B).

Para la mayoría de los programas, RepaintManager se puede ver como parte del sistema interno de Swing y prácticamente se puede ignorar. Sin embargo, su API proporciona a los programas la opción de obtener un control más preciso sobre ciertos aspectos de la pintura.


sobre las experiencias en este foro

(+1 para ambos contestadores) pero, creo que no es posible responder correctamente su pregunta, parte de los métodos Graphics(2D) requirió llamar a repaint() programáticamente, el resto implementando este método (en API ) directamente (seguro que algunos les falta este método en API)

para parte de Swing JComponents es quizás mejor no estar de acuerdo, este foro está lleno de preguntas sobre Concurency in Swing , comenzando con Graphics(2D) pensado JTextComponents , JTree y ends (la misma manera se declara como thread safe) con setText() ,

sobre Concurency in Swing hay un número notable de preguntas