2012-05-11 7 views
6

Когда запрос на обновление передается качели (либо из системы, вызванной, например, из-за изменения размера или блока другим окном, либо с помощью приложения, вызванного вызовом метода repaint()), как этот запрос фактически обрабатывается? Какая процедура выполняется в этой статье RepaintManager?В swing-java, откуда появился экземпляр Graphics?

+6

Насколько вам это необходимо? Если _very_ подробно, вы можете посмотреть исходный код, в противном случае хорошим местом для начала будет официальная документация: http://www.oracle.com/technetwork/java/painting-140037.html – Thomas

+0

Спасибо, я прочитал оба , но не понял, как генерируется экземпляр * Graphics *. Я проследил pre до некоторого * peer.getGraphics() * (называемого внутри * Component.getGraphics() *), где я предположил, что * peer * является суперпользователем (который упоминался в вашей ссылке). но там я потерял трек. знаете ли вы, что происходит в * peer.getGraphics() *? – Untitled

ответ

3

Ваш комментарий:

Вы знаете, что происходит в peer.getGraphics()?

Это зависит от того, какая реализация используется сверстниками.

Одна реализация WComponentPeer (используется при работе на Windows), который, кажется, используют два способа для получения Graphics объекта:

  1. Если компонент имеет родителя типа Window (или один сам по себе) который, в свою очередь, связан с обратным буфером, возвращается объект изображения Graphics. Это зависит от типа изображения, но наиболее похоже на экземпляр SunGraphics2D, созданный в createGraphics().

  2. В противном случае вызывается экземпляр ScreenUpdateManager и вызывается createGraphics(...), который в свою очередь возвращает новый экземпляр SunGraphics2D.

Обратите внимание, что это всего лишь один из возможных способов, и это сильно зависит от ОС, используемого инструментария JVM и UI.

Смежные вопросы