JLabel不会更新,使用计时器每3秒更新一次时间

时间:2019-07-09 18:29:11

标签: java jlabel timertask

我正在创建一个倒数计时器,并使用带有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),与分钟保持一致,依此类推。

GUI上的输出未更改。

0 个答案:

没有答案