Swing-Komponenten korrekt aktualisieren?

Ich bin neu zu schwingen, jede Hilfe geschätzt.

In diesem Codeteil drehe ich eine Karte auf den Kopf. Wenn sich herausstellt, dass sie nicht übereinstimmen, soll sie wieder auf den Kopf gestellt werden.

Momentan geschieht Folgendes: 1. Wenn geklickt wird, dreht sich die erste Karte um. 2. Wenn eine zweite Karte angeklickt wird, geschieht eines von zwei Dingen Sie sind nicht gleich Ich sehe die zweite Karte überhaupt nicht, da sie sofort die Rückseite der Karte (und die Rückseite der vorherigen Karte, wie in meiner Methode definiert) wieder anzeigt.

Ich dachte, wenn ich den Sleep-Timer einsetze, wird die zweite Karte möglicherweise noch eine Weile angezeigt, bevor ich sie wieder umdrehe, aber das ist nicht der Fall.

Ich habe versucht, contentPane.revalidate () zu verwenden. & contentPane.repaint (); aber es ändert nichts.

Ich habe einige Konsolenausgaben eingegeben:

Console output:
Card: 0 set
Card: 6 set
Sleeping now
Card: 6 unset
Card: 0 unset

Oben ist die resultierende Konsolenausgabe beim Klicken auf zwei Karten, die nicht übereinstimmen

@Override
public void actionPerformed(ActionEvent e) 
{
    String buttonPressed = e.getActionCommand();
    int pos = Integer.valueOf(buttonPressed);
    action = Control.model.ReceiveCardsTurned(pos);

    keypadArray[pos].setIcon(myIcons[pos]);     
    System.out.println("Card: "+pos+" set");
    currentTime.setText("" + Control.model.time);
    currentScore.setText("" + Control.model.score);

    //contentPane.revalidate();
    //contentPane.repaint();        

    if(Control.model.twoCardsTurned == false)
    {
        if (action == "unturn") 
        {
            System.out.println("Sleeping now");

            try 
            {
                Thread.sleep(1000);
            }

            catch (InterruptedException e1) 
            {
                e1.printStackTrace();
            }

            keypadArray[pos].setIcon(back);
            keypadArray[Control.model.lastCard].setIcon(back);
            System.out.println("Card: "+pos+" unset");
            System.out.println("Card: "+Control.model.lastCard+" unset");
        }
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage