用某些东西更新JLabel Icon,等待2秒,然后用其他东西更新?

时间:2017-04-08 14:17:06

标签: java swing user-interface

这是我的代码的相关部分:

private class ButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == push) {
            g.getHuman().beAPig(true);
        }
        else {
            g.getHuman().beAPig(false);
        }

        // take p1 turn and check if players switched
        if (!g.gameOver() && g.playGame()) {
            while(!g.playGame()); // loop until players switched
        }

        updateLabels();

        if (g.gameOver()) {
            gameOverDialog();
        }
    }
}

//-----------------------------------------------------------------
//  Updates the score labels and die images.
//-----------------------------------------------------------------
private void updateLabels() {
    die1Image.setIcon(pair.getDie1Image());
    die2Image.setIcon(pair.getDie2Image());
    p1RoundPointsLabel.setText(Integer.toString(g.getHuman().getRoundPoints()));
    p1GamePointsLabel.setText(Integer.toString(g.getHuman().getGamePoints()));
    p2RoundPointsLabel.setText(Integer.toString(g.getComputer().getRoundPoints()));
    p2GamePointsLabel.setText(Integer.toString(g.getComputer().getGamePoints()));
    sumLabel.setText(pair.toString());
}

所以这个游戏叫做PigDice。玩家和计算机轮流掷出一对骰子等。当任何一个骰子上的一个掷骰子时,该玩家的回合结束,并传递给另一个玩家。问题是,当我滚动一个,它立即切换到计算机,它立即轮流,立即切换回我并用计算机的最后一卷更新骰子图像。我想要做的就是当人类滚动一个东西时,它会更新模具图像以便你可以看到它们滚动的东西,然后暂停1-2秒,然后用计算机的结果更新所有标签转动。

我已经阅读了一些关于EDT的内容(没有完全理解),我尝试使用Thread.sleep()和InvokeLater()失败。

感谢。

0 个答案:

没有答案