SwingWorker, Thread.sleep () или javax.swing.timer? Мне нужно «вставить паузу»
Я работаю над игрой с памятью и хочу ее настроить, поэтому нажимаю первый"card"
, затем вторая и, если они не совпадают, вторая карта показывает в течение нескольких секунд, то они возвращаются к"non-flipped"
позиция.
Я пытался с помощью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;
}
}
}
}
}
Заранее благодарю за любой совет