所以我正在尝试制作一个反应游戏,你按下开始按钮,一个隐藏的计时器,从1和1之间的随机数倒数到零。 10秒关于java计时器的大多数答案建议使用
了Thread.sleep(1000);
然而,这会中断整个程序,而我只想让它倒计时。我该怎么解决这个问题?
按下开始后,程序从随机数倒计时。蓝色图标(下面的整个代码)将变为红色,然后您应该按下它,它将显示您按下它所花费的时间。
代码是焦点:
<section><title>Wing Landing Gear</title>
<p>Each wing landing gear has a leg assembly and
a four-wheel bogie beam. The WLG leg includes a Bogie Trim Actuator
(BTA) and an oleo-pneumatic shock absorber.</p>
</section>
使用的图像文件:
整个代码:
public void countDown() throws InterruptedException {
int random = r.nextInt((10000 - 1000) + 1) + 1000;
while(random >= 0){
Thread.sleep(1000);
random -= 1000;
}
if (random <= 0) {
button_1.setIcon(img_react);
repaint();
}
}
答案 0 :(得分:2)
你不能只使用mvn sonar:sonar
,它不会像你想象的那样工作。相反,您可以使用javax.swing.Timer
来做您正在尝试做的事情。
文档中的一些注释(如果您没有阅读它):
我已经修改了here的示例,以展示如何根据您的需求进行调整。它使用您每次定时器完成时生成的随机生成的数字,然后按&#34;开始&#34;。
Thread.sleep()
答案 1 :(得分:1)
我会建议一个不同的架构。为什么你认为你需要“倒数”什么?!
含义:你所关心的只是你想在一段时间之后做“某事”;所以这样的事情(使用伪代码)最终可能会更容易:
now = ... get current time
then = now + random value
schedule the Swing timer to sent some Event X "then"
只需要一些能够对传入的X事件做出反应的代码。