gpt4 book ai didi

java - 创建一个循环之间间隔一秒的循环 [处理代码中的异常]

转载 作者:行者123 更新时间:2023-12-02 09:14:33 25 4
gpt4 key购买 nike

我正在尝试创建一个倒计时器,它将更新 Java 中测验应用程序的 Jlabel。到目前为止,我的代码有这个,但它给出了 sleep() 方法的错误,并且不运行我的程序。

while (timer > 0) {
lblTimer.setText(Integer.toString(timer));
Thread.sleep(1000);
timer--;
}

最佳答案

class JlabelUpdater {
private JLabel label;
private Integer timerTickCount;
private Integer tickerIntervalInMillis;
private ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(1);

public JlabelUpdater(JLabel label, Integer timerTickCount,
Integer tickerIntervalInMillis) {
this.label = label;
this.timerTickCount = timerTickCount;
this.tickerIntervalInMillis = tickerIntervalInMillis;
}

public void startTimer() {
scheduledExecutorService.scheduleAtFixedRate(() -> {
if (timerTickCount == 0) {
scheduledExecutorService.shutdown();
}

System.out.println("timer running: " + timerTickCount);
changeText(timerTickCount + "");
timerTickCount--;
}, 0, tickerIntervalInMillis, TimeUnit.MILLISECONDS);
}

private void changeText(final String text) {
EventQueue.invokeLater(() -> {
label.setText(text);
System.out.println("text = " + text);
}
);
}
}

如果您想要一个 5 秒的计时器并每 1 秒更新一次 JLabel 文本,您可以创建此类的一个对象并像这样调用它。

new JlabelUpdater(new JLabel(), 5, 1000).startTimer();

始终建议使用 ScheduledExecutorService 而不是 Timer只要有可能。

关于java - 创建一个循环之间间隔一秒的循环 [处理代码中的异常],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59104571/

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