2012-11-26 14 views
3

我的問題很直接。 我已在neatbeans一個簡單的應用程序中,當我點擊一個按鈕上的文字的x座標說「@」一直由20 繼承人改變代碼: -用戶自定義函數 - for循環(JAVA)

int x; 

private void wActionPerformed(java.awt.event.ActionEvent evt) 
{         
    x=x+20;  
    q.setLocation(x, 0);  
} 

這個代碼只是移動jlabel(q)向右移動20個座標,每次點擊jbutton(w)。 現在我想的是,當我點擊該按鈕只有一次,然後選擇JLabel的位置應保持增加其x 20,直到座標已經達到一個特定的x座標說200 我使用循環嘗試: -

private void wActionPerformed(java.awt.event.ActionEvent evt) 
{ 
    for(x=0;x<201;x=x+20) 
    { 
     q.setlocation(x,0); 
    } 
} 

但這個時候我按一下按鈕,選擇JLabel直接移動到200 x座標,而不每20個座標後停止......請幫助.. 問候, 斯林格

+0

以及在再次前進之前應停多久?你嘗試使用sleep()嗎? –

+1

問問自己:我期望標籤移動速度有多快?我的代碼在哪裏是一個控制速度的參數? – Flavio

+0

HOLA, 我螞蟻它在每次移動..remember..i希望它達到coordinte(200,0),而x座標是由20在每1秒... – Samarth

回答

2

上述的問題是, Swing調用你的增量器,只有當你的增量函數完成後才執行刷新。相反,您需要啓動一個單獨的線程來執行此動畫,並讓Swing在每次增量後更新。

退房SwingUtilities.invokeLater()SwingWorker類。這是a tutorial on SwingWorker

+0

這就是增加的時間之後停止1秒鐘正確的布賴恩...但它覆蓋了我的頭:( 我可以得到一個東西的例子? – Samarth