gpt4 book ai didi

Java:如何等待 updateUI?

转载 作者:行者123 更新时间:2023-11-29 08:11:51 26 4
gpt4 key购买 nike

我在做一个棋盘游戏的demo。我想你一定知道。我是怎么遇到问题的。结果很快就显示出来了。我想看看它是如何慢慢解决的。

主要代码如下:

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 对象。

最佳答案

I also add the sleep at the beginning, but only the progress is slow down, it seems has nothing to do with the showing up

看起来您的代码正在事件调度线程上执行。你永远不应该告诉 EDT sleep ()。这可以防止 GUI 重新绘制自身。阅读 Concurrency 上的 Swing 教程部分了解更多信息。

相反,您应该使用 Swing Timer 来安排每个 Action 的动画。本教程还有一个关于计时器的部分。

关于Java:如何等待 updateUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com