我有一个相当奇怪的问题,或者更多的是关于paint()-method的问题:我正在使用可视化一堆图像的部分来删除一些应用程序。您可以使用键盘和鼠标在该堆栈中导航,以查看每个图像。其中一个要求是,即使您在堆栈中快速导航,您也应该能够实际看到每个图像。为了证明我在paint()方法中添加了一些日志输出,以查看显示的是什么图像,一切似乎都很正常。然后,我用一个(软件)视频采集卡从监视器上捕获了一个快速导航,并有足够的帧率,以便在录制的视频中看到一些图像被跳过(视频总是包含显示器上显示的每个图像的几个帧)。我测试了其他一些视频采集卡,也有相同的结果。在我看来,即使实际上为每个图像调用了paint()-method,监视器输出也会跳过其中的一些图像。我该如何避免这种情况呢?我希望你能理解我的问题,对于这个应用程序来说,这是一个真正的问题。
提前感谢你的任何提示,安迪
发布于 2016-05-31 17:20:52
绘制完成后,您必须在component.Then上调用revalidate,更改将会生效。
发布于 2016-05-31 17:54:00
查看documentation on painting,我们可以在笔记上看到:
NOTE: If multiple calls to repaint() occur on a component before
the initial repaint request is processed, the multiple requests may
be collapsed into a single call to update(). The algorithm for
determining when multiple requests should be collapsed is
implementation-dependent. If multiple requests are collapsed, the
resulting update rectangle will be equal to the union of the rectangles
contained in the collapsed requests. 因此,即使您以正确的顺序调用重绘并绘制所有内容,也可能会发生多个绘制事件折叠为一个事件的情况。
看起来您已经采取了措施,当我正确阅读文档时,您必须在repaint()调用之后显式地update()组件。
https://stackoverflow.com/questions/37541508
复制相似问题