J'essaie de créer un compte à rebours qui mettra à jour un jlabel code> dans java pour une application quiz. Jusqu'à présent, j'ai ceci pour mon code mais cela donne une erreur pour la méthode
Sleep () Code> et n'exécute pas mon programme.
3 Réponses :
ajoutez un bloc de capture d'essayer d'attraper l'exception
Quand j'essaie que le programme ne charge pas du tout.
new JlabelUpdater(new JLabel(), 5, 1000).startTimer();
Il existe sûrement un moyen plus simple de simplement avoir une étiquette dans une boucle qui attend 1 seconde et les modifications de la valeur dans l'étiquette?
Simple est totalement contextuel, 3 lignes de code peuvent sembler simples avec différents niveaux de complexité. Dans un fil mondial simultané n'est pas une chose simple. Pour signaler quelques-uns, vous ne devriez pas dormir le fil principal / interface utilisateur qui est impliqué dans l'interaction de l'utilisateur et vous ne pouvez pas mettre à jour l'élément d'interface utilisateur du fil de fond / travailleur, car les éléments d'interface utilisateur sont confinés principaux. Cette liste continue ...
Vous devez faire l'une des opérations suivantes:
a. Surround thread.sleep | (1000) code> avec ESSAY / CATCH P>
while (timer > 0) {
lblTimer.setText(Integer.toString(timer));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
timer--;
}
il donne une erreur code> - quelle erreur?
Exécutez-vous ce code sur le fil principal?
Thread.sleep () ne peut lancer que
interrompteException code>
C'est exactement ce qu'il dit quand je l'ajoute. Exception d'interrupteur
'Type d'exception non confondu Interrêmement exception'
@Asphens veuillez éditer votre question et ajouter plus de code, méthode entière, pas seulement cette petite partie
@Asphens Cela signifie que
thread.sleep () code> peut lancer
interrompteException code> et vous devez le gérer dans votre code, que ce soit en l'attrapant et en le gérant dans votre capture ou le jette dans votre méthode. Il devrait y avoir des tonnes d'exemples sur la façon de gérer cela le meilleur moyen.
Ce n'est pas une bonne idée de dormir le fil principal pour un souci de réactivité.
Utilisez un
Swing CODE> code> TIMER CODE> sur les deux, ce qui correspond à la bonne voie et déployez la nécessité d'utiliser
thread.sleep (..) code> (qui devrait Certainement pas i> b> est utilisé dans une interface graphique).
@Asphens - Si l'une des réponses résolvait votre problème, vous pouvez aider la communauté en le marquant comme accepté. Une réponse acceptée aide les futurs visiteurs à utiliser la solution avec impatience. Vérifiez meta.stackexchange.com/questions / 5234 / ... pour apprendre à le faire.