谷歌搜索了几天,我不知道如何判断在处理paintComponent时是否调用了paintComponent。这个过程漫长而复杂。如果我有第二个(或第三个)绘制请求,我想中止当前的绘制过程并重新开始最近的请求。
你不能;打电话给paintComponent()
排队,阻塞EDT https://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html直到完成。使用此中所示的方法AnimationTest https://stackoverflow.com/a/3256941/230513在典型的目标平台上自行确定实施时间。根据需要进行优化。作为一个具体的例子,这个KineticModel https://sites.google.com/site/drjohnbmatthews/kineticmodel说明了可能适用于您的用例的几种动画技术。
附录:您的更新表明“漫长而复杂”的过程涉及构建一个BufferedImage
以供稍后显示。为了避免阻塞 EDT,请在后台执行此操作SwingWorker http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html从中你可以publish()
中期结果公布后。这example https://stackoverflow.com/a/25043676/230513模拟一次一行构建光栅图像。
这相关的example https://stackoverflow.com/a/16880714/230513构造一个TexturePaint
以类似的方式。
如需具体指导,请编辑您的问题以包含最小、完整且可验证的示例 https://stackoverflow.com/help/mcve这表明你修改了方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)