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;
                    }
                }
            }
        }
    }

Заранее благодарю за любой совет

Ответы на вопрос(1)

Ваш ответ на вопрос