我收到数百个事件每秒几秒钟,每一个更新我的模型。如果每次事件发生后,我都在invokeLater()内部调用invokeLater(),那么每秒会调用数百次吗?意识到它有500个备份的repaint()并且只需要做一个就够了吗?我不知道事件什么时候会暂停,但我只想以合理的速度更新UI。我可以实现一个不断更新的未来,直到有足够长的暂停,比如500 ms,但是如果java已经这样做了,我为什么要这样做呢?
发布于 2020-04-28 06:50:04
文档是一个很好的信息来源。
来自repaint()的javadoc
注意:有关AWT和Swing使用的画图机制的更多信息,包括关于如何编写最有效的绘图代码的信息,请参见AWT和Swing中的绘画。
程序在组件上调用
repaint(),该组件向AWT注册一个异步请求,该组件需要重新绘制。 AWT将导致事件调度线程在组件上调用update()。 注意:如果在处理初始重绘请求之前在组件上发生了多个对repaint()的调用,则多个请求可能被折叠为对update()的单个调用。确定何时应折叠多个请求的算法依赖于实现。如果折叠了多个请求,则生成的更新矩形将等于折叠请求中包含的矩形的合并。
https://stackoverflow.com/questions/61473554
复制相似问题