Судя по комментариям, вы не перекрашиваете фрейм после завершения действий. Если вы этого не сделаете, то экран будет обновляться только в то время, которое кажется случайным (когда, возможно, впереди другое окно).
Внутри gui.update
, я предлагаю вам сделать последнюю строку:
myFrame.repaint();
(более или менее, в зависимости от ваших обстоятельств).
Редактировать: Как оказалось, настоящей проблемой является этот цикл:
synchronized(performedAction){
while(!hasPerformedAction()){
try {
performedAction.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
setPerformedAction(false);
}
Поскольку существует только один поток приложения (который является EDT), результат hasPerformedAction()
никогда не может измениться (при условии, что это простой метод получения). Нет другого потока для изменения значения. Поскольку этот бесконечный цикл находится на EDT, GUI никогда не может быть перекрашен; следовательно, он блокируется.