在SWT的Label中点击实现倒计时,当倒计时结束时再次点击Label框再次开始倒计时
时间: 2024-05-15 10:15:15 浏览: 43
首先,需要在Label中添加MouseListener来监听鼠标点击事件。在点击事件中,判断当前是否正在倒计时,如果是则停止倒计时,如果不是则开始倒计时。倒计时的实现可以使用Timer类来完成,每隔一秒钟更新剩余时间,并在剩余时间为0时停止计时。
以下是示例代码:
```
Label label = new Label(parent, SWT.CENTER);
label.setText("Click to start countdown");
label.addMouseListener(new MouseAdapter() {
private Timer timer;
private int remainingTime;
@Override
public void mouseDown(MouseEvent e) {
if (timer != null) {
// 停止计时
timer.cancel();
timer = null;
label.setText("Click to start countdown");
return;
}
remainingTime = 10; // 倒计时时间为10秒
label.setText(String.valueOf(remainingTime));
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Display.getDefault().asyncExec(() -> {
remainingTime--;
if (remainingTime <= 0) {
// 倒计时结束,停止计时
timer.cancel();
timer = null;
label.setText("Click to start countdown");
return;
}
label.setText(String.valueOf(remainingTime));
});
}
}, 1000, 1000);
}
});
```
阅读全文