因此,我正在編寫一個可以對玩家玩黑白棋/黑白棋的程序。我寫了一個方法,使作品的動畫短片flipping-如何讓方法暫停而不暫停整個程序?
public void flip(int row, int col, Graphics window)
{
Color a;
if (pieces[row][col]==1)
a = Color.black;
else
a = Color.white;
for (int size = 90; size>0; size-=2)
{
try { Thread.sleep(11,1111); } catch (InterruptedException exc){}
window.setColor(new Color(0, 100, 0));
window.fillRect(row*100+3, col*100+3, 94, 94);
window.setColor(a);
window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);
}
if (a==Color.black)
a=Color.white;
else
a=Color.black;
for (int size = 0; size<90; size+=2)
{
try { Thread.sleep(11,1111); } catch (InterruptedException exc){}
window.setColor(new Color(0, 100, 0));
window.fillRect(row*100+3, col*100+3, 94, 94);
window.setColor(a);
window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);
}
}
它工作得很好,看上去很不錯,但問題是,由於暫停了Thread.Sleep整個程序,它只能在翻轉一塊時間。有沒有什麼我可以做,暫停這種方法,而不會中斷程序的其餘部分?
謝謝大家。新的線程工作,但現在我有一個不同的問題。 flip方法中的三種setcolor方法正在混淆。我認爲這是因爲一些線程將顏色設置爲綠色,一些變爲黑色,一些變爲白色。我該如何解決?
+1不要做任何可能在GUI線程中花費大量時間的事情。始終將此工作傳遞給antoher線程,並使用SwingUtils.invokeLater從另一個線程更新GUI。 –