当一个更新请求被传递到 swing 时(系统触发,例如因为调整大小或被另一个窗口阻塞,或者应用程序触发,例如通过调用 repaint() 方法),这个请求实际上是如何处理的?RepaintManager 中发生了什么过程?
问问题
278 次
1 回答
3
从您的评论中:
你知道在 peer.getGraphics() 中发生了什么吗?
这取决于使用哪个对等实现。
一种实现是WComponentPeer
(在 Windows 上运行时使用),它似乎使用两种方法来获取Graphics
对象:
如果组件有一个类型的父级
Window
(或本身就是一个),而后者又关联了一个后台缓冲区图像,Graphics
则返回该图像的对象。这取决于图像的类型,但最有可能是一个SunGraphics2D
实例,创建于createGraphics()
.否则,将
ScreenUpdateManager
检索一个实例并createGraphics(...)
在其上调用该实例,该实例又返回一个新SunGraphics2D
实例。
请注意,这只是一种可能的方式,它在很大程度上取决于所使用的操作系统、JVM 和 UI 工具包。
于 2012-05-12T06:59:18.847 回答