0
votes

Créer une boucle comportant un deuxième espace entre les boucles [exceptions de traitement dans le code]

J'essaie de créer un compte à rebours qui mettra à jour un jlabel 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 () et n'exécute pas mon programme. xxx


10 commentaires

il donne une erreur - quelle erreur?


Exécutez-vous ce code sur le fil principal?


Thread.sleep () ne peut lancer que interrompteException


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 () peut lancer interrompteException 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 TIMER sur les deux, ce qui correspond à la bonne voie et déployez la nécessité d'utiliser thread.sleep (..) (qui devrait Certainement pas 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.


3 Réponses :


0
votes

ajoutez un bloc de capture d'essayer d'attraper l'exception xxx


1 commentaires

Quand j'essaie que le programme ne charge pas du tout.



1
votes
new JlabelUpdater(new JLabel(), 5, 1000).startTimer();

2 commentaires

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 ...



0
votes

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--;
}


0 commentaires