![](/img/trans.png)
[英]How to implement a smoothly falling JLabel without using Timer, but Threads instead
[英]JLabel not refreshing without needing additional threads?
我正在制作一个倒数计时器,该计时器每秒刷新一次。
我一辈子都想不通如何刷新JLabel。 我搜索了其他线程,但是它们都涉及使用其他线程。 有没有办法使JLabel / Panel刷新? (可能不需要面板)。 如果我删除了while循环,它会起作用,这只会给我原始时间的计时器String,并且不会减少。 但是,如果我包含while循环,它只会返回一个恒定的黑屏,直到计时器用完为止,然后它会返回原始值。
我应该如何刷新JLabel,以使其在每次递减时都显示在GUI上(希望不使用线程。)? (或者每次while循环运行时)
“如果删除while循环,它将起作用 ”
您正在阻止事件调度线程。
Swing是一个单线程框架,这意味着EDT阻止的任何块都将阻止处理事件队列并导致UI挂起。
有关更多详细信息,请参见Swing中的并发 。
最简单的解决方案是使用Swing Timer
,它将允许您安排将在EDT上下文中执行的常规回调。
有关更多详细信息,请参见如何使用Swing计时器 。
javax.swing.Timer timer = new javax.swing.Timer(500, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
counter++;
label.setText(count);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.