2013-10-15 100 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