gpt4 book ai didi

java - for 循环中的 Thread.sleep(x) 问题 - Java

转载 作者:行者123 更新时间:2023-11-30 06:35:51 25 4
gpt4 key购买 nike

我正在制作一个包含圆角矩形的框架。这个矩形不断地(重新)绘画本身具有较小的值。

计划是,首先矩形的宽度 (x) 减小,然后矩形的高度 (y) 减小。

但现在我只想完成宽度的减少。但我已经在这里遇到麻烦了。

请注意,我只绘制矩形的边框,所以我不想填充它。

我做了一个for循环如下:

 for (rectWidth = 470; rectWidth >= 0; --rectWidth) {

try {
//simply made to represent rectWidth's value, not really relevant
System.out.println("rectWidth is: " + rectWidth);

//draw the rectangle with it's new width, ignore the "rectHeight" for now.
g.drawRoundRect(5, 5, rectWidth, rectHeight, 10, 10);

//this Thread.sleep is messing up my frame which has an instance of this class added
//to it also, my program is uninterruptable when adding this Thread.sleep
Thread.sleep(500);

} catch (Exception ex) {
//rectangle's value will be returned here when interrupted.

}
}

我的问题是,如何在我的 for 循环中添加一个“ sleep ”以使绘图不会太快,没有弄乱我的框架。这个 thread.sleep 以一种我什至看不到的方式搞乱了我的框架不再是矩形。

我想实现矩形的平滑(重新)绘制。 (是的,我知道这段代码现在它不是重新绘制矩形,而是不断地在框架中绘制一个稍小的矩形。)

最佳答案

矩形未显示的原因是显示在 EventDispatchThread 上更新,这可能与您的循环所在的线程相同。那是它无法绘制矩形,因为它正忙着 sleep 。

解决方案是使用 Swing Timer它将运行并愉快地 sleep ,在更新时向 EventDispatchThread 发送任务。

关于java - for 循环中的 Thread.sleep(x) 问题 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5478962/

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