2016-03-13 32 views
0

好吧,我正在製作一款名爲「Connect Four」的遊戲。我正在嘗試做的是這樣的。所以一旦你按下名爲「Human vs Computer」的按鈕,它應該會顯示「你的遊戲開始於」「3」(現在它應該等待一秒鐘然後它應該打印)「2」 (現在它應該等待一秒鐘,那麼它應該打印)「1」。如何讓JButton等待一秒?

但是,當我這樣做..它會凍結「人與計算機按鈕」,我不知道它爲什麼這樣做。那麼你能告訴我如何解決這個問題。這是我到目前爲止所嘗試的。

private class humanVsComputerButtonListener implements ActionListener { 
public void actionPerformed(ActionEvent event) {  

    if (event.getSource() == humanVsCom) { 

    lblWelcome.setVisible(true); 
    playButton.setVisible(false); 
    ruleButton.setVisible(true); 
    quitButton.setVisible(true); 
    humanVsCom.setVisible(false); 
    multiplayer.setVisible(false); 
    withTimeLimit.setVisible(false); 
    noTimeLimit.setVisible(false); 
    ruleButton.setVisible(false); 
    quitButton.setVisible(false); 
    goBack.setVisible(false);   
    lblGameStarts.setVisible(true); 

    try { 
     Thread.sleep(5000);       
    }catch (Exception e) { 
    } 

    lblGameStarts.setVisible(false);   
    lblinThree.setVisible(true); 

    try { 
     Thread.sleep(5000);       
    }catch (Exception e) { 
    } 

    lblinThree.setVisible(false); 
    lblinTwo.setVisible(true); 

    try { 
     Thread.sleep(5000);       
    }catch (Exception e) { 
    } 

    lblinTwo.setVisible(false); 
    lblinOne.setVisible(true); 

    try { 
     Thread.sleep(5000);       
    }catch (Exception e) { 
    } 

    lblinOne.setVisible(false);   
    } 
} 
} 
} 

經過一段時間後,它會在一行中打印所有內容。

enter image description here

請幫我解決這個問題。謝謝。

+0

您正在凍結整個線程。您應該考慮創建[定時器](https://docs.oracle.com/javase/8/docs/api/javax/swing/Timer.html)並在每個打勾上編輯標籤。 – dinomario10

+0

像我如何做到這一點。我看着它的API,並遵循完全相同的事情,但它仍然給我錯誤。 –

回答

1

這整個程序運行一個線程(除非你創建或程序創建任何線程)。因此,要在自己的線程獨立運行的東西你做的東西像下面這樣:

if (event.getSource() == b) { 
Thread th=new Thread() { 
    public void run() { 
    b.setText("1"); 
    try { 
     Thread.sleep(5000);       
    }catch (Exception e) { 
    } 
    b.setText("2"); 
    try { 
     Thread.sleep(5000);       
    }catch (Exception e) { 
    } 
    b.setText("3"); 
    } 
}; 
th.start(); 
} 

裏面你把你要執行什麼run()方法。

+0

非常感謝你。它的作品非常完美 –