java - JLabel 不会更新,使用定时器每 3 秒更新一次时间
问题描述
我正在创建一个倒数计时器,并使用带有 JFrame 的 GUI。我正在尝试使用 label.setText(text); 函数,虽然我知道 Java 是编译的,但我认为使用计时器会用我拥有的代码每 3 秒更新一次。请问有什么帮助吗?我想更新 setText 但它在我的代码中没有这样做,我必须重新运行代码,这基本上意味着我的代码不起作用。
我试过调整我的 while 循环和其他语句,但我不知道出了什么问题。
int currentDay = now.getDayOfMonth();
int currentHour = now.getHour();
int currentMinute = now.getMinute();
int currentSecond = now.getSecond();
JLabel lblMinutesLeft = new JLabel("Minutes Left: "+ (60-currentMinute));
lblMinutesLeft.setFont(new Font("Tahoma", Font.PLAIN, 20));
lblMinutesLeft.setHorizontalAlignment(SwingConstants.CENTER);
lblMinutesLeft.setBounds(125, 488, 160, 74);
contentPane.add(lblMinutesLeft);
JLabel lblSecondsLeft = new JLabel("Seconds Left: " + (60-currentSecond));
lblSecondsLeft.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblSecondsLeft.setHorizontalAlignment(SwingConstants.CENTER);
lblSecondsLeft.setBounds(106, 573, 150, 50);
contentPane.add(lblSecondsLeft);
Timer timer = new Timer();
TimerTask tt = new TimerTask() {
public void run() {
while (currentDay != 10) {
lblMinutesLeft.setText("Minutes Left: "+ (60-currentMinute));
lblSecondsLeft.setText("Seconds Left: " + (60-currentSecond));
}
}
};
timer.schedule(tt, 1000, 3000);
输出应该每 3 秒更新一次(60 - currentNum of seconds into the minute)并且与分钟相同,依此类推。
我的 GUI 上的输出没有改变。
解决方案
推荐阅读
- php - RSS 2.0 和 Atom 1.0:必需的标头?
- python-3.x - Python“if”条件“and”和“or”之间的区别
- excel - 数据透视表 VBA - 添加多个“总和”数据字段并清除现有数据透视表
- vuejs2 - L-map,未正确显示,vue2leaflet 在 framework7 弹出窗口中
- javascript - Send person to certain website depending on text box space count
- python-3.x - 调用 max(list) 时,Python 3 不支持 -: 'str' 和 'str' 的操作数类型
- laravel - Laravel 5.6 - 重置密码令牌如何确保它们匹配?
- ruby - 通过邮件 gem 发送 smtp 电子邮件会导致 554 5.7.0 Reject
- hadoop - HDFS NFS 启动错误:“ERROR mount.MountdBase: 无法启动 TCP 服务器...ChannelException: 无法绑定...”
- cakephp - CakePHP 3.6 - 查找在两个日期之间创建的所有记录