如何使用Thread.sleep显示简单的删除动画?

kaf*_*er2 1 java thread-sleep

我正在制作一个游戏板,我想展示游戏板动画,动画是一个像这样下降的物体,


时间= 0
○○○
○○○
○○○
○○○
时间= 1
●○○
○○○
○○○
○○○
时间= 2
●○○
●○○
○○○
○○○
时间= 3
●○ ○
●○○

○○○○○
时间= 4
●○○
●○○
●○○
●○○


 for (int row = 0; row < ROW_MAX; row++) {
      for (int col = 0; col < COLUMN_MAX; col++) {
          TempBoard[row][col]= hollow;
       }
 }
drawBoard(TempBoard);
Thread.sleep(1000);
TempBoard[0][column] = solid;
drawBoard(TempBoard);
Thread.sleep(1000);
TempBoard[1][column] = solid;
drawBoard(TempBoard);
Thread.sleep(1000);
TempBoard[2][column] = solid;
drawBoard(TempBoard);
Thread.sleep(100);
TempBoard[3][column] = solid;
drawBoard(TempBoard);
Thread.sleep(1000);
Run Code Online (Sandbox Code Playgroud)

但是我无法得到我想要的东西,它直接显示时间= 4而错过了时间步骤= 0-3是什么问题?我该如何解决?或者其他任何简单的方法吗?谢谢.
drawBoard方法:

public void drawBoard(Disc[][] updateBoard) {
    Disc[][] tempBoard = updateBoard;
    for (int row = 0; row < ROW_MAX; row++) {
        for (int col = 0; col < COLUMN_MAX; col++) {
            if (tempBoard[row][col] == hollow) {
                //jbtBoard[row][col].setIcon(hollowImg);
                System.out.println(hollow);
            } else if (tempDisc[row][col] == solid) {
                //jbtBoard[row][col].setIcon(solidImg);
                System.out.println(solid);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行代码时,输​​出是这样的:


时间= 0,1,2,3
○○○
○○○
○○○
○○○
时间= 4
●○○
●○○
●○○
●○○


Hei*_*upp 5

如果您在UI线程上执行此操作(在一个回调中),该过程将像您所说的那样运行,但UI线程将只能显示您在代码完成后给出的绘制命令 - 这实际上意味着显示版本4 .