У меня возникла проблема с (я думаю) таймером качания. Я написал код, который отлично работал, а затем переместил его на новый компьютер, где он быстро не работал. Я написал класс GUI (на основе JFrame) с помощью этого метода:Проблемы с таймером качания Java
public void Splash(){
mainPanel.add(Empous.splash, BorderLayout.CENTER);
while(Empous.splash.GetCount() < 3){
//System.out.println(Empous.splash.GetCount());
}
}
Метод вызывается из другого класса. Этот парень Empous.splash - это класс JPanel, который просто запускает анимацию всплеска. Он делает это с помощью таймера поворота. В классе заставки, слушатель настраивает содержимое моего кадра с помощью следующего кода:
private class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent evt) {
counter+=1;
if (counter==1){
title2.setText("In Association With");
title1.setText("El Pollo Diablo Productions");
}
if (counter==2){
remove(title2);
remove(title1);
repaint();
}
if (counter==3){
timer.stop();
}
}
}
Теперь, если оператор печати в первом блоке закомментирован, моя программа будет замерзать после того, как таймер останавливается. Если я раскомментирую его, программа распечатает значение счетчика, а затем продолжит движение вправо, как дождь. Я хотел бы вывести заявление печати и запустить цикл while без каких-либо действий, но я не могу сделать так, как это происходит в настоящее время. Любая помощь оценивается.
Возможно, вы должны создать [SSCCE] (http://sscce.org) или, по крайней мере, опубликовать больше кода. – Jeffrey
Пожалуйста, изучите [Соглашения о присвоении имен Java] (http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367) и придерживайтесь их при кодировании :-) –
См. [Loop doesn 'см. измененное значение без оператора печати] (https://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement), чтобы объяснить, почему заявление печати делает разница. – Boann