在Swing中,可以使用javax.swing.Timer类来创建计时器。当计时器结束时,可以通过调用stop()方法来停止计时器。如果希望在主Swing线程中等待计时器结束,可以使用Thread.sleep()方法来暂停主线程。
下面是一个示例代码:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {
// 创建计时器,每秒触发一次
Timer timer = new Timer(1000, new ActionListener() {
int count = 5; // 设置计时器触发次数
@Override
public void actionPerformed(ActionEvent e) {
if (count > 0) {
System.out.println("计时器触发:" + count);
count--;
} else {
((Timer) e.getSource()).stop(); // 停止计时器
}
}
});
// 启动计时器
timer.start();
// 暂停主线程直到计时器结束
while (timer.isRunning()) {
try {
Thread.sleep(100); // 暂停主线程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("主线程继续执行");
}
}
在上述代码中,创建了一个计时器,每秒触发一次,总共触发5次。在计时器的actionPerformed()方法中,判断计时器触发次数,如果还未达到设定的次数,则输出触发信息并减少计数器值;如果达到设定的次数,则调用stop()方法停止计时器。
在主线程中,使用while循环判断计时器是否仍在运行,如果计时器仍在运行,则使用Thread.sleep()方法暂停主线程。当计时器结束后,主线程继续执行。
这种方式可以实现暂停主Swing线程直到Swing计时器结束的效果。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云