J'ai un problème avec (je pense) un minuteur swing. J'ai écrit du code qui a bien fonctionné, puis je l'ai déplacé sur mon nouvel ordinateur où il a rapidement échoué. J'ai écrit une classe de GUI (basé sur JFrame) avec cette méthode:Java problèmes de minuterie swing
public void Splash(){
mainPanel.add(Empous.splash, BorderLayout.CENTER);
while(Empous.splash.GetCount() < 3){
//System.out.println(Empous.splash.GetCount());
}
}
La méthode est appelée d'une autre classe. Ce type Empous.splash est une classe JPanel qui exécute simplement l'animation splash. Il le fait avec une minuterie de swing. Au sein de la classe d'accueil, l'auditeur ajuste le contenu de mon image via le code suivant:
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();
}
}
}
Maintenant, si cette déclaration d'impression dans le premier bloc est commenté, mon programme va geler après arrêt de la temporisation. Si je le décommente, le programme imprimera la valeur du compteur, puis continuera à droite comme pluie. Je voudrais sortir la déclaration d'impression et faire tourner la boucle while sans faire quoi que ce soit, mais je ne peux pas faire cela comme cela se passe actuellement. Toute aide appréciée.
Vous devriez probablement créer un [SSCCE] (http://sscce.org), ou au moins poster plus de code. – Jeffrey
Veuillez lire [Conventions de nommage Java] (http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367) et respectez-les lorsque vous codez :-) –
Voir [Loop doesn Ne pas voir la valeur modifiée sans une instruction d'impression] (https://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement) pour l'explication de la raison pour laquelle l'instruction print une différence. – Boann