0

我想将我的计时器设置为 0 并显示经过的时间。使用此代码,它会自动从 1:00 开始。但我想自动从 0:00 开始。这是我的代码,它从 1:00 开始。如何将此代码设置为从 0:00 开始的计时器?

class TimeTyping extends JPanel implements Runnable{

    private JLabel timelabel;
    private int sec=1,min=1,testtime=0;
    private String str;
    private boolean timefree;
    protected Thread t1 ;

    TimeTyping(int time){

        super();
        setLayout(new FlowLayout());
        setVisible(true);
        setSize(300,300);


        if(time<=5){
            str=""+time+":00";
            timelabel=new JLabel(str);
            timefree=false;
        }
        else{
            timelabel=new JLabel("Free Time Test");
            timefree=true;
        }
        add(timelabel);

        t1 = new Thread(this);
        /*t1.start();
        t1.suspend();*/
    }

    public void run(){
        try{

            if(timefree){
                testtime++;
                run();
                System.out.println("free");
            }
            else{
                //taking min and sec form label
                synchronized(this) {
                    if(sec==0){
                        sec=60;
                        min--;
                    }
                    sec++;
                    testtime++;
                    if(sec>9){
                        timelabel.setText(min+":"+sec);
                    }
                    else{
                        timelabel.setText(min+":0"+sec);
                    }
                }
                Thread.sleep(1000);
                //if test is not over 
                if(min>0 || sec>0){
                    run();  
                }
            }

        }
        catch(Exception e){}

    }

    //return total test time taken in sec
    public int getTestTime(){

        return testtime;

    }

    //return minutes of test time left 
    public int getMin(){
        return min;
    }


    //return sec of test time left
    public int getSec(){
        return sec;
    }

    /*public static void main(String args[]){

        TypingTime t= new TypingTime();

    }*/


}
4

2 回答 2

0

为什么在第 4 行设置min = 1sec = 1?在我看来,这就是您的计时器从 01:00 开始的原因。另外:你如何调用构造函数?如果您不带参数调用它,TypingTime t= new TypingTime();它将忽略您的所有设置。

于 2011-11-24T12:19:54.600 回答
0

你设置minsec = 1。那是您的问题,但是如果您将它们的值更改为,0您将从 min = 开始-1。在您的代码中添加boolean(例如)。因此,如果您的程序刚刚启动init,您可以签入该行。if(sec==0){希望你明白我的意思。:-)

...
private boolean init = false;
...
if (sec == 0 && init) {
    sec = 60;
    min--;
} else if (!init) {
    init = true;
}
... 

顺便说一句,我认为你应该使用javax.swing.Timer

于 2011-11-24T12:23:32.090 回答