在JFrame内创建倒数计时器

时间:2016-07-04 00:58:06

标签: java swing timer

我一直在努力解决这个问题,所以我想我会寻求一些帮助。

我正在创建一个游戏应用程序,它要求我制作动态倒数计时器。通过动态,我的意思是能够将您想要的倒数计时器作为消费者。我遇到的问题是让我的代码等待1000毫秒,以正确的时间执行更新代码。我正在尝试使用sleep功能来执行此操作...

这不是我正在制作的应用程序这只是为了尽可能地帮助我解决我的问题。这里的所有内容都直接来自Eclipse IDE中的WindowBuilder。我遇到的问题是让Thread thread = new Thread();Thread.sleep(1000);一起工作整整1秒延迟。

package test;

import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import javax.swing.SwingConstants;
import java.awt.Font;

public class test {

private JFrame frame;

/**
 * 
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                test window = new test();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}




/**
 * Create the application.
 */
public test() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */



private void initialize() {
    frame = new JFrame();
    frame.getContentPane().setBackground(Color.RED);

    JLabel lblNewLabel = new JLabel("Test");
    lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 62));
    lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
    frame.getContentPane().add(lblNewLabel, BorderLayout.CENTER);
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Thread thread = new Thread();

            for(int i = 60;i>=0;i--){
                thread.sleep(500);
                lblNewLabel.setText("Test" + i);
            }

}

}

如果您在IDE中抛出此代码,则会出现读取Unhandled exception InterruptedException的错误。如果我添加了抛出声明,那么代码只是真实地混淆了我不知道那里有什么问题。

我该如何解决或解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是另一种方法。请注意,此代码不是测试。

private void initialize() {
    ...
    new Thread() {
        int counter = 10;
        public void run() {
            while(counter >= 0) {
                lblNewLabel.setText("Test" + (counter--));
                try{
                    Thread.sleep(1000);
                } catch(Exception e) {}
            }
        }
    }.start();
}