gpt4 book ai didi

java - JApplet 使用的线程分割

转载 作者:行者123 更新时间:2023-12-01 16:00:31 25 4
gpt4 key购买 nike

我花了很多时间试图理解这一点。我创建了一个 JApplet,它在循环中使用 Thread.sleep() 来为小程序设置动画。但当我尝试运行小程序时,屏幕保持空白。当我在单独的线程中绘制动画并调用重绘时,小程序运行得很好。我见过很多关于为什么会发生这种情况的解释,但没有一个是非常全面的。

什么线程调用paint方法?为什么该线程不能在 Canvas 上部分绘制,暂停,然后继续绘制?我注意到一些 Thread.sleep() 调用按预期工作,特别是当它们不在循环中时。

最佳答案

UI 需要重新绘制,这发生在 UI 线程上。

因此,您不应该夺取 UI 线程的控制权 - 似乎您正在这样做(使用 .sleep() 进行动画循环)。

您应该返回 UI 线程的控制权(退出您所在的函数),以便可以重新绘制它。

看看Swing PaintingSwingWorker了解如何运行后台线程来完成一些工作,然后在 UI 线程上更新 UI。

关于java - JApplet 使用的线程分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com