我正在製作一個記憶遊戲,我想設置它,所以我點擊第一個"card"
,然後第二個,如果它們不相同,第二個卡片顯示幾秒鐘然後他們回到"non-flipped"
的位置。SwingWorker,Thread.sleep()或javax.swing.timer?我需要「插入一個暫停」
我試過使用SwingWorker
,Thread.sleep
和SwingTimer
但我無法得到它的工作。使用Thread.sleep
第二張牌不會"flip"
如果它是重複的,它會等待睡眠時間並消失。如果它不匹配,則「正面朝下」等待,在睡眠定時器之後,第一張卡片會翻轉。無論我放置Thread.sleep的位置如何,都會發生這種情況。
隨着Swing Timer
它只看起來「改變定時器」,而我與卡互動,所以我最終翻動8張卡之前,它激活。
我沒有與SwingWorker
運氣,我甚至不知道它會爲我正在尋找的工作。
這是我的代碼:
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
for(int index = 0; index < arraySize; index++)
{
if(button[index] == e.getSource())
{
button[index].setText(String.valueOf(cards.get(index)));
button[index].setEnabled(false);
number[counter]=cards.get(index);
if (counter == 0)
{
counter++;
}
else if (counter == 1)
{
if (number[0] == number[1])
{
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setVisible(false);
}
}
}
else
{
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setEnabled(true);
button[i].setText("Card");
}
}
}
counter = 0;
}
}
}
}
}
基本上就是我需要的是當計數器== 1,並且該卡不匹配這個代碼來執行:
button[index].setText(String.valueOf(cards.get(index)));
button[index].setEnabled(false);
然後暫停,所以card is revealed
那個時候,最後它恢復到卡面朝下的位置。
這是我試圖用Thread.sleep()
:
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
for(int index = 0; index < arraySize; index++)
{
if(button[index] == e.getSource())
{
button[index].setText(String.valueOf(cards.get(index)));
button[index].setEnabled(false);
number[counter]=cards.get(index);
if (counter == 0)
{
counter++;
}
else if (counter == 1)
{
if (number[0] == number[1])
{
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setVisible(false);
}
}
}
else
{
try
{
Thread.sleep(800);
}
catch (InterruptedException e1)
{
e1.printStackTrace();
}
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setEnabled(true);
button[i].setText("Card");
}
}
}
counter = 0;
}
}
}
}
}
預先感謝任何建議
如果你正在使用'Thread.sleep()方法'確保你不睡覺,在事件指派線程 – 2013-04-30 05:09:05
使用一個Swing'Timer'這一點。爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-04-30 05:16:10
我以錯誤的方式使用Swing Timer,我終於設法讓它工作嘿嘿。無論如何,謝謝你。 – user2334483 2013-04-30 06:40:06