6

当一个更新请求被传递到 swing 时(系统触发,例如因为调整大小或被另一个窗口阻塞,或者应用程序触发,例如通过调用 repaint() 方法),这个请求实际上是如何处理的?RepaintManager 中发生了什么过程?

4

1 回答 1

3

从您的评论中:

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

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

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

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

  2. 否则,将ScreenUpdateManager检索一个实例并createGraphics(...)在其上调用该实例,该实例又返回一个新SunGraphics2D实例。

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

于 2012-05-12T06:59:18.847 回答