在EDT之外使用Computicter.repaint()安全吗?
我找不到任何官方文档说从事件调度线程(EDT)以外的另一个线程调用Computent.repaint
是安全的。
是这样吗?在哪里可以找到一些文档/代码?
我找不到任何官方文档说从事件调度线程(EDT)以外的另一个线程调用Computent.repaint
是安全的。
是这样吗?在哪里可以找到一些文档/代码?
它是线程安全的。确保将此类调用置于事件调度线程中。RepaintManager
Swing 类的目的是最大限度地提高在 Swing 包含层次结构上重绘处理的效率,并实现 Swing 的“重新验证”机制(后者将成为单独文章的主题)。它通过拦截 Swing 组件上的所有重绘请求(因此 AWT 不再处理它们)并保持其自身对需要更新的内容的状态(称为“脏区域”)来实现重绘机制。最后,它用于处理事件调度线程上的挂起请求,如“重绘处理”(选项 B)一节中所述。
RepaintManager
invokeLater()
对于大多数程序,RepaintManager可以被视为Swing内部系统的一部分,几乎可以忽略。但是,它的API为程序提供了对绘画的某些方面进行更精细控制的选项。