Czy poprawnie zaktualizować elementy obrotowe?
Jestem nowy w huśtawce, każda pomoc jest doceniana.
W tym fragmencie kodu odwracam kartę do góry, jeśli okaże się, że się nie zgadzają, chcę, żeby znów zwrócili się twarzą w dół.
W tej chwili to, co się dzieje: 1. po kliknięciu pierwsza karta obraca się 2. po kliknięciu drugiej karty dzieje się jedna z dwóch rzeczy (a), jeśli są takie same, oboje pozostają, co chcę (b), jeśli nie są takie same Nigdy nie widzę drugiej karty w ogóle, ponieważ natychmiast ponownie wyświetla tylną stronę karty (i tył poprzedniej karty, tak jak zdefiniowano w mojej metodzie).
Myślałem, że włączenie wyłącznika czasowego może spowodować, że druga karta będzie wyświetlana przez pewien czas, zanim się odwróci, ale tak nie jest.
Próbowałem użyć contentPane.revalidate (); & contentPane.repaint (); ale nic nie zmienia.
Włożyłem kilka wyjść konsoli:
Console output:
Card: 0 set
Card: 6 set
Sleeping now
Card: 6 unset
Card: 0 unset
Powyżej przedstawiono wynikową konsolę po kliknięciu dwóch kart, które się nie zgadzają
@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");
}
}
}