延迟不能正常工作,而是在大延迟后完成所有操作

时间:2014-05-19 20:13:31

标签: java multithreading user-interface delay

所以我正在使用人工智能做一个tic tac脚趾的项目,我想做一个选项,这样你就可以重播游戏,看看上一轮发生了什么,我的意图是让重播成为它的实际播放现在,这意味着在每次移动之后都会显示延迟,然后下一个移动将会发生。而不是按预期工作,延迟jsut一次全部没有任何事情发生,直到整个游戏突然出现beinge显示为一个游戏,但作为一个完成屏幕'无论如何这里是代码:

replayMode=true;
    setStatus("Replay Playing...");
    ifButtonsEnabled(true);
    initBoard();
    int turn=0;
    Move current;
    for(int i=0;i<replayer.getSizeOfVect();i++)
    {
        current=replayer.getMoveAt(i);

        if(i%2==0)
        {
            buttons[current.getI()][current.getJ()].setText("X");
        }
        else
        {
            buttons[current.getI()][current.getJ()].setText("O");
        }
        try {
            Thread.sleep(650);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    setStatus("Replay ended.");
    replayMode=false;

1 个答案:

答案 0 :(得分:3)

通常当您在GUI程序中看到这种效果时,它是因为您需要将控制权交还给GUI线程的事件循环,以便进行任何绘图。而不是Thread.sleep我推荐使用间隔为650毫秒的定时器并执行一个&#34;步骤&#34;定时器每次打勾的动画。