2013-10-15 103 views
0

我有一个问题在我的代码,因为我不能停止swing.timer如何停止摆动计时器?

//一些代码在这里

我试图if语句把一个但它不工作。

Static int gScore = 1000; 
t = new Timer(100, new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     score01.setText("score: " + gScore); 
     gScore--;  
    } 
}); 
t.start(); 
t.setRepeats(true); 
if(gScore== 970){//A 
    t.stop(); 
    t.setRepeats(false);  
}//A 

我想停止计时,当它达到一个给定值,并移除它的JFrame里面

+0

该代码甚至不会编译。你必须说的不仅仅是“它不工作”。把调试语句放在那里看看发生了什么。 – Kayaman

+0

请格式化代码,并发布完整的方法。 – UDPLover

回答

0

您的计时器将是最终

t.cancel(); 
t.purge(); 

,并宣布你的计时器时,将其设置作为最后的

final Timer t = new Timer(...) 
+0

你是什么意思?我应该把t.cancel();在if语句里面? –

+0

我试图缩进你的代码,并且你到处都有多余的花括号,请把你所有的代码放在我们可以定义的地方,然后再添加它;) – RamonBoza

+0

我再次编辑它 –

0

你应该改变你的代码如下:

static int gScore = 1000; 
final Timer t = new Timer(100, new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    score01.setText("score: " + gScore); 
    gScore--; 
    if(gScore== 970){//A 
     t.stop(); 
    }//A 
    } 
}); 
t.start(); 
+0

我这样做,但它不能解决我的问题。因为我不能在gScore之后放置if语句; 我只能把if语句放在})之后;仍然不起作用 –

+0

计时器变量必须声明为final,或者声明为类的成员变量。 –

+1

使用侦听器时,可以使用事件的getSource()方法获取源对象。 'Timer timer =(Timer)e.getSource();' – camickr