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

AWT/Swing Java Discussion :

ArrayOutOfBoundsException dans l'EDT de swing


Sujet :

AWT/Swing Java

  1. #1
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut ArrayOutOfBoundsException dans l'EDT de swing
    Salut,

    Je me heurte à un problème et je cherche une méthode pour m'en sortir. Dernièrement je remarque un certain comportement sur une frame de mon application qui s'affiche dans un coin haut gauche quelques instants puis se redessine au centre correctement.
    Parfois j'ai un effet fantome ou la frame reste affiché (mais n'est pas accessible) et si je passe autre chose par dessus, ca l'efface (un peu comme une gomme).

    Je remarque que ce bug ne m'apparait qu'en jdk 1.4, je ne le rencontre pas en 1.5
    et c'est accompagné d'une exception :
    java.lang.ArrayIndexOutOfBoundsException: No such child: 2

    at java.awt.Container.getComponent(Container.java:237)

    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:3702)

    at javax.swing.JComponent.paint(JComponent.java:806)

    at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)

    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)

    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)

    at javax.swing.JComponent._paintImmediately(JComponent.java:4685)

    at javax.swing.JComponent.paintImmediately(JComponent.java:4488)

    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)

    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)

    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:189)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:478)

    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    Ca aurait été dans mon code, je m'en serais sorti. Ici c'est swing qui tente de repeindre des zones de l'écran et je ne connais pas bien son fonctionnement.
    Du coup je ne vois pas trop quelle méthode appliquer pour comprendre et éventuellement corriger.

    Auriez vous une idée ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    tu dois manipuler des composant en dehors de l'event dispatch thread je dirais...

  3. #3
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    si c'était le cas, ce ne serait pas autant aléatoire et je pense que j'aurais aussi le souci en 1.5 non ?

  4. #4
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    apparemment sur un post un peu équivalent on retrouve ce type de conclusion :
    http://forum.java.sun.com/thread.jsp...85&forumID=423

    Ton idée serait sans doute bonne.

    Le tout c'est de trouver l'endroit ou se situe le souci, j'ai donc cherché des méthodes comme dit plus haut et j'en ai éventuellement trouvé une en cherchant sur le swinglab:

    https://swinghelper.dev.java.net/

    =>
    http://weblogs.java.net/blog/alexfro...ing_swing.html

    Je testerais demain.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Citation Envoyé par hugo123 Voir le message
    si c'était le cas, ce ne serait pas autant aléatoire et je pense que j'aurais aussi le souci en 1.5 non ?
    Justement, c'est aléatoire parce que c'est un problème de concurrence, suivant la façon dont les différents threads s'enchainent, ça se produit ou pas.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/08/2012, 05h32
  2. integrer firefox dans une interface graphique swing
    Par fraisa1985 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 21/06/2011, 12h15
  3. EDT et Swing
    Par pierrox dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 29/08/2008, 23h39
  4. Fermer une JFrame dans l'EDT
    Par Mister_Kp dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 14/05/2008, 11h29
  5. catching des exceptions levées dans l'EDT
    Par nouknouk dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 29/07/2007, 11h23

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