У меня есть проблема, следующая из моего previous problem. У меня также есть код SwingUtillities.invokeAndWait
где-то еще в базе кода, но когда я удаляю это, gui не обновляется. Если я не удалить его ошибка, я получаю:вызов invokeAndWait из EDT
Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
at java.awt.EventQueue.invokeAndWait(Unknown Source)
at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
at game.player.humanplayer.model.HumanPlayer.act(HumanPlayer.java:69)
Код в HumanPlayer.act является:
public Action act(final Action[] availiableActions) {
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
gui.update(availiableActions);
}
});
}
catch (InterruptedException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
synchronized(performedAction){
while(!hasPerformedAction()){
try {
performedAction.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
setPerformedAction(false);
}
return getActionPerfomed();
}
Изображение потоков, когда в отладке, как экран не краска: alt text http://img684.imageshack.us/img684/6669/69288941.png
Текстовая версия стека:
ui.startup.LoginScreen at localhost:51050
-> Deamon Thread [AWT-Windows] (Running)
-> Thread [AWT-Shutdown] (Running)
-> Thread [AWT-EventQueue-0] (Running)
-> Thread [DestroyJavaVM] (Running)
У вас есть вызов 'repaint()' где угодно (например, в 'gui.update()')? –
Нет, у меня есть 'validate()' – Aly
'validate' полностью отличается от' repaint'. –