2012-05-11 20 views
6

Cuando una solicitud de actualización se entrega a swing (ya sea un sistema activado por ejemplo debido a un cambio de tamaño o un bloque por otra ventana o activado por la aplicación, por ejemplo, mediante una llamada al método repaint), ¿cómo se maneja esta solicitud? ¿Qué procedimiento tiene lugar en esa cosa de RepaintManager?En swing-java, ¿de dónde viene la instancia de Graphics?

+6

¿Qué tan detallada lo necesita? Si es muy detallado, puede consultar el código fuente, de lo contrario, un buen lugar para comenzar sería la documentación oficial: http://www.oracle.com/technetwork/java/painting-140037.html – Thomas

+0

Gracias, leí ambos . pero no entendí cómo se genera la instancia de * Graphics *. Seguí el pre a algunos * peer.getGraphics() * (llamado inside * Component.getGraphics() *) donde asumí que * peer * es el peer pesado (que se mencionó en tu enlace). pero allí perdí la pista. ¿sabes lo que sucede en * peer.getGraphics() *? – Untitled

Respuesta

3

Desde su comentario:

¿Conoce lo que sucede en peer.getGraphics()?

Eso depende de la implementación que se use.

Una aplicación es WComponentPeer (se utiliza cuando se ejecuta en Windows), que parece utilizar dos formas para conseguir el Graphics objeto:

  1. Si el componente tiene una matriz de tipo Window (o es uno mismo) que a su vez tiene una imagen de búfer de respaldo asociada, se devuelve el objeto Graphics de esa imagen. Esto depende del tipo de imagen, pero es más parecido a una instancia de SunGraphics2D, creada en createGraphics().

  2. De lo contrario una instancia ScreenUpdateManager se recupera y se createGraphics(...) se llama en él que a su vez devuelve una nueva instancia SunGraphics2D.

Tenga en cuenta que esta es solo una forma posible y depende en gran medida del conjunto de herramientas de sistema operativo, JVM y UI.

Cuestiones relacionadas