代码不会执行

时间:2014-03-28 19:01:43

标签: java

我有这段代码

// If we click on an unfolded card
if (card.clicked == false) {
    clicksCount++;
    clickedCards[clicksCount - 1] = card;

    card.showCardImage();

    if (clicksCount == 2) {

        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        // Loop through clicked cards and if they don't have the
        // same ID fold them
        if (clickedCards[0].cardID != clickedCards[1].cardID) {

            for (int k = 0; k < clickedCards.length; k++) {
                clickedCards[k].setDefaultIcon();
                clickedCards[k].clicked = false;
            }

            failedAttempts.setText("Failed Attempts: "
                    + ++failedCount);
        }

        attemptsCount++;
        attempts.setText("Attempts " + attemptsCount);
        clicksCount = 0; // reset click counter

    }
}

这是我的pexeso游戏的功能。第一张卡显示卡的图像很好,但是当我第二次点击时它没有显示它的图像。它只等待然后折叠第一张卡。

我知道这是因为睡了线程但不知道该怎么办。

我会很高兴任何想法或建议。

1 个答案:

答案 0 :(得分:1)

我猜这是一个Swing GUI(你永远不会告诉我们)。如果是这样,那么你是对的:在Swing事件线程上调用Thread.sleep(...)将使整个GUI进入休眠状态,包括所有GUI绘图。而是使用摆动定时器设置为1000毫秒的延迟。在Timer的ActionListener中,您将把卡更改回原始卡。您将通过setter方法setRepeats(false)告诉计时器不要重复。

Swing Timer Tutorial