我正在ChessBoard Game上做一個演示。我想你一定知道它。我遇到過什麼問題。結果只是顯示得很快。我想看看它是如何緩慢運行的。Java:我如何等待updateUI?
下面是主要代碼:
public void ChessBoard(int tr, int tc, int dr, int dc, int size) throws InterruptedException {
if (size == 1) {
return;
}
Random rd = new Random();
float red = rd.nextFloat();
float green = rd.nextFloat();
float blue = rd.nextFloat();
Color col = new Color(red, green, blue);
int s = size/2;
if (dr < tr + s && dc < tc + s) {
ChessBoard(tr, tc, dr, dc, s);
} else {
button[tr + s - 1][tc + s - 1].setBackground(col);
ChessBoard(tr, tc, tr + s - 1, tc + s - 1, s);
}
if (dr < tr + s && dc >= tc + s) {
ChessBoard(tr, tc + s, dr, dc, s);
} else {
button[tr + s - 1][tc + s].setBackground(col);
ChessBoard(tr, tc + s, tr + s - 1, tc + s, s);
}
if (dr >= tr + s && dc < tc + s) {
ChessBoard(tr + s, tc, dr, dc, s);
} else {
button[tr + s][tc + s - 1].setBackground(col);
ChessBoard(tr + s, tc, tr + s, tc + s - 1, s);
}
if (dr >= tr + s && dc >= tc + s) {
ChessBoard(tr + s, tc + s, dr, dc, s);
} else {
button[tr + s][tc + s].setBackground(col);
ChessBoard(tr + s, tc + s, tr + s, tc + s, s);
}
mainPanel.updateUI();
for (long i=1;i<10000;i++){
for (long j=0;j<10000;j++){
i+=1;
i-=1;
}
}
}
但結果只是在一瞬間變成了似乎mainPanel中並沒有完成其工作。 mainJanel是一個JPanel對象。
也許你應該把用不同的方法繪製動畫的不同部分的代碼,然後,一次一個地調用它們,並在兩者之間進行睡眠?那是你的追求? –