SwingWorker, Thread.sleep () lub javax.swing.timer? Muszę „wstawić pauzę”

Pracuję nad grą pamięci i chcę ją skonfigurować, więc klikam pierwszą"card", następnie druga i jeśli nie są takie same, jak druga karta pokazuje się przez kilka sekund, wracają do"non-flipped" pozycja.

Próbowałem użyćSwingWorker, Thread.sleep iSwingTimer ale nie mogę go uruchomić. ZThread.sleep druga karta się nie przyzwyczaje"flip" jeśli jest to duplikat, czeka czas snu i znika. Jeśli nie jest to mecz, czeka „zakryty”, a po wyłączniku czasowym pierwsza karta się odwraca. Dzieje się tak niezależnie od miejsca, w którym umieściłem Thread.sleep.

ZSwing Timer wydaje się, że „zmienia zegar” podczas interakcji z kartami, więc w końcu rzucam 8 kart, zanim się uaktywni.

Nie miałem szczęściaSwingWorker i nie jestem nawet pewien, czy zadziała to, czego szukam.

To jest kod, który mam:

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

Zasadniczo potrzebuję tego kodu do wykonania, gdy licznik == 1, a karta nie jest zgodna:

    button[index].setText(String.valueOf(cards.get(index)));
                    button[index].setEnabled(false);

Potem przerwa, więccard is revealed na ten czas, a na koniec wznawia powrót karty do pozycji zakrytej.

To właśnie próbowałemThread.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;
                    }
                }
            }
        }
    }

Z góry dziękuję za wszelkie porady

questionAnswers(1)

yourAnswerToTheQuestion