¿Actualizando correctamente los componentes del swing?

Soy nuevo en el swing, cualquier ayuda apreciada.

En este código, doy vuelta una carta boca arriba, si resulta que no coinciden, quiero que vuelvan boca abajo otra vez.

En el momento lo que está sucediendo: 1. cuando se hace clic en la primera tarjeta, se da vuelta 2. cuando se hace clic en una segunda tarjeta, ocurre una de las dos cosas siguientes (a) si son las mismas, ambas se quedan arriba, que es lo que quiero (b) si no son lo mismo. Nunca veo la segunda tarjeta, ya que vuelve a mostrar inmediatamente la parte posterior de la tarjeta (y la parte posterior de la tarjeta anterior, tal como se define en mi método).

Pensé que poner el temporizador de reposo podría mantener la segunda tarjeta mostrada durante un período de tiempo antes de volver, pero no lo hace.

Intenté usar contentPane.revalidate (); & contentPane.repaint (); Pero eso no cambia nada.

He puesto en algunas salidas de consola:

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

Arriba está la salida de la consola resultante al hacer clic en dos tarjetas que no coinciden

@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");
        }
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta