在swing-java中,Graphics实例来自哪里?

Unt*_*led 6 java swing repaint

当更新请求被传递到swing(系统触发,例如由于调整大小或由另一个窗口阻止,或者由app调用例如通过调用repaint()方法),该请求如何实际处理?在RepaintManager中发生了什么过程?

Tho*_*mas 3

从你的评论来看:

你知道在peer.getGraphics()中发生了什么吗?

这取决于使用哪个对等实现。

一种实现是WComponentPeer(在 Windows 上运行时使用),它似乎使用两种方式来获取Graphics对象:

  1. 如果组件具有类型的父级Window(或者本身就是一个类型),而该类型又具有关联的后台缓冲区图像,Graphics则返回该图像的对象。这取决于图像的类型,但很可能是SunGraphics2DcreateGraphics().

  2. ScreenUpdateManager否则,将检索并createGraphics(...)调用一个实例,然后返回一个新SunGraphics2D实例。

请注意,这只是一种可能的方式,它很大程度上取决于所使用的操作系统、JVM 和 UI 工具包。