将我的计时器设置为0:00并显示已用时间

时间:2011-11-24 12:07:50

标签: java timer typing elapsed

我想将我的计时器设置为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();

    }*/


}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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