2012-10-31 98 views
0

爲此;我想要「連續」按鈕開始rollthedice()和「停止」按鈕來停止它,但是當我再次點擊「連續」按鈕時,我希望它再次開始rollthedice(),來回你能告訴我使用ScheduleThreadPoolExecutor的正確語法嗎?

scheduler = new ScheduledThreadPoolExecutor(1); 

ScheduledFuture now = null; 

Runnable runner = new Runnable(){ 
    public void run() 
    { 
     rollthedice(); 
    } 
}; 


if(e.getSource()==continuous) 
{ 

    now = scheduler.scheduleAtFixedRate(runner, 0, 500, TimeUnit.MILLISECONDS); 
} 
if(e.getSource()==stop) 
{ 

    now.cancel(true); 

} 
+1

你試過谷歌搜索... – Joel

+0

你能澄清一下你是什麼意思的「點擊連續按鈕」?它是用戶生成事件嗎?你是怎樣做的? – Arham

+0

它的JFrame圖形用戶界面與按鈕「停止」和「連續」此代碼是在actionPerformed – JRowan

回答

1

你缺少的是這種分配到ScheduledFuturenow

now = scheduler.scheduleAtFixedRate(runner, 0, 500, 
       TimeUnit.MILLISECONDS); 

然後就可以調用now.cancel(true);

略低於聲明動彈一流水平,即你可以將你的actionPerformed在我之上的ThOD。它在那之後很好地工作。

ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(1); 
ScheduledFuture<?> now = null; 
+0

好吧,我做到了這一點,我得到一個空指針異常,當我停止,它不停止rollthedice(),它應該是參數化 – JRowan

+0

@JRowan你可以粘貼整個代碼。 –

+0

它就在那裏,我只是一個試圖進入實踐的初學者 – JRowan

相關問題