日期:2014-05-20  浏览次数:20759 次

请问一个定时器的问题。。。。。。
一个定时器,在程序运行时就开始计时,程序界面上有个按钮,如果显示为“停止”,按下就停止计时,反之按下后开始计时。
...
Timer   timer   =   new   Timer();
MyTask   tasks=new   MyTask();

class   MyTask   extends   java.util.TimerTask{......}
...
...
初始化函数中:{timer.schedule(tasks,   0,   1000);}
...
...
public   void   jButton1_actionPerformed(ActionEvent   e)   {
       
if   (jButton1.getText()== "开始 ")
        {
            XXXXXXXXXXXX
            jButton1.setText( "停止 ");
        }
else
        {
            tasks.cancel();
            jButton1.setText( "开始 ");
        }
    }

现在我不知道按下“开始”的代码应该怎样写。因为按下“停止”后,初始化时建立的MyTask对象就没了,按下“开始”,又要新建一个MyTask对象,但是这个对象不能在else中被调用啊。

------解决方案--------------------
用多线程好了
------解决方案--------------------
这边只能用线程
------解决方案--------------------
對,用線程解決比較容易
------解决方案--------------------
这个技术我刚用过,很简单的,你把Timer搞成全局的static变量就可以了.
/** Timer */
private static Timer timer = new Timer();

开始:timer.schedule(tasks, 0, 1000);

停止:timer.cancel();


------解决方案--------------------
timer本身就是一个线程呀,应该能实现