IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Impossible de capturer les évènements à cause d'une boucle


Sujet :

Langage Java

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut Impossible de capturer les évènements à cause d'une boucle
    Bonjour,

    Je développe un viewer de fichiers vidéos avec Xuggler. Il fonctionne bien, jusqu'au moment où je souhaite le placer dans une JFrame, avec bouton Stop, etc.

    Là, quand la vidéo est en lecture (au travers d'une boucle forcenée), impossible de fermer la fenêtre (en haut à droite) ni que les boutons soient activés lors d'un clic.

    J'ai placé cette boucle dans un SwingUtilities.invokeLater( new Runnable() {, mais rien n'y fait.

    Par contre, lorsque la vidéo s'arrête, là les évènements se produisent. Je pense donc à un pb de thread, mais je n'arrive pas à comprendre comment Xuggler arrive à capter toutes les ressources, bien qu'au niveau microprocesseur, on est à 4%.

    Une idée ?

    Christian

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normal : les traitements "long" ne doivent pas être effectué dans l'EDT, car sinon tu l'empêche de faite son travail !

    Ce n'est pas une question de ressource ou autre : l'EDT est une grosse boucle infini qui traite les évènements et l'affichage dans une boucle.
    Si le traitement de ton évènement met trop de temps à répondre, il ne pourra pas traiter les autres évènements ou mettre à jour l'affichage.


    Il faut effectuer ce traitement dans un thread en tâche de fond, et non pas dans l'EDT.
    La solution la plus simple étant d'utiliser un SwingWorker.


    a++

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    Hello,

    Merci de ta réponse rapide.

    Ta solution fonctionne vraiment très bien. Un grand merci.

    Christian

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/10/2010, 13h42
  2. Capturer les évènements en dehors de l'appli
    Par Jidewe dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2008, 19h54
  3. capturer les packets envoyé par une adresse ip
    Par edzodzinam dans le forum Réseau
    Réponses: 1
    Dernier message: 20/03/2008, 23h06
  4. Trapper les événements clavier dans une fenêtre
    Par NicoV dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/03/2008, 11h28
  5. Réponses: 5
    Dernier message: 21/12/2004, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo