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

Interfaces Graphiques en Java Discussion :

Bug d'affichage non identifié. . .


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut Bug d'affichage non identifié. . .
    Bonjour,
    A chaque lancement de mon appli, une JList se remplit (à partir d'une base de données) et s'affiche.
    Mais j'obtiens aléatoirement ce bug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
    	at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
    	at javax.swing.plaf.basic.BasicListUI.paint(Unknown Source)
    	at javax.swing.plaf.ComponentUI.update(Unknown Source)
    	at javax.swing.JComponent.paintComponent(Unknown Source)
    	at javax.swing.JComponent.paint(Unknown Source)
    	at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
    	at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
    	at javax.swing.JComponent._paintImmediately(Unknown Source)
    	at javax.swing.JComponent.paintImmediately(Unknown Source)
    	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
    	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)

    Je dis bien "aléatoirement" ! des fois oui, des fois non ! Dans tous les cas je peux continuer à utiliser mon application. Par contre j'obtiens parfois un autre bug : ma liste reste blanche au démarrage. Je peux quand-même cliquer sur les éléments invisibles ! Si je clique sur mon bouton de tri, alors la liste est rechargée, et elle s'affiche correctement.

    J'ai donc ces deux problèmes à résoudre, mais je bloque car la trace ne m'indique même pas quel composant est concerné....

    Pourriez-vous me mettre sur la voie svp ? Je peux vous fournir des bouts de mon code si nécessaire.

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    a première vue, ca doit être du au look and feel...
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  3. #3
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Et bien cher ami, il me semble que tu t'amuses à faire des updateCompotentTreeUI dans tous les sens... ...et surement pas dans l'EDT . Cela est aléatoire car un coup cela passe, un coup non (thread oblige).
    Il te suffit donc de faire en lieu et place de ton SwingUtilities.updateComponentTreeUi(tonFrame) (si toutefois tu fais cette méthode sinon, si tu fais un autre traitement graphique hors de l'EDT)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    new Thread(new Runnable() {
    public void run() {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    //ton traitement graphique
    }
    });
    }).start();
    Si je me suis exité pour rien montre nous un peu de code

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut ???
    Voilà le code concerné : ce bout de code appelle les méthodes de chargement à partir de la BD, et remplit mes arrayList (méthodes "charger").
    Puis afficher Film (détaillée plus bas)
    Un bouton est enablé ou non et le curseur souris changé, et un champ texte est MAJ (rien d'important quoi)

    [code]
    this.setCursor (Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    chargerFilms();
    chargerGenres();
    chargerFormats();
    jButtonNouveau.setEnabled (true);
    afficherListeFilms();
    initializeCounters();mailupdate=0

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut ???
    Voilà le code concerné : ce bout de code appelle les méthodes de chargement à partir de la BD, et remplit mes arrayList (méthodes "charger").
    Puis afficher Film (détaillée plus bas)
    Un bouton est enablé ou non et le curseur souris changé, et un champ texte est MAJ (rien d'important quoi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
        this.setCursor (Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        chargerFilms();
        chargerGenres();
        chargerFormats();
        jButtonNouveau.setEnabled (true);
        afficherListeFilms();
        initializeCounters();
        this.setCursor (Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
     
     
      public void afficherListeFilms () {
        viderListe(); // mon ArrayList
        Film f = null;
        Iterator it = listFilms.iterator();
        while (it.hasNext()) {
          f = (Film)(it.next());
          listModel.addElement (f);
        }
        jList.updateUI();
      }
    S'il manque du code pouvant vous aider n'hésitez pas...
    Merci d'avance !

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut Quezaco ?
    Up !
    J'ai essayé de "nettoyer" mes validate et update un peu partout, mais c'est pas mieux, j'ai ces erreurs intempestives et aléatoires...
    Janitrix j'ai pas compris tout ce que tu m'as suggéré... je n'utilise jamais de threads...

  7. #7
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Pourquoi appelle-tu updateUI() ?
    Romain Guy
    Android - Mon livre - Mon blog

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Gfx
    Pourquoi appelle-tu updateUI() ?
    Ca fait partie de mes tests pour forcer l'affichage...

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

Discussions similaires

  1. Bug affichage non constant
    Par pedros dans le forum Firefox
    Réponses: 1
    Dernier message: 07/06/2014, 16h47
  2. Problème non identifié, bug boucle perl
    Par Adrien_13 dans le forum Langage
    Réponses: 1
    Dernier message: 09/03/2010, 09h07
  3. [AWT] Bug d'affichage
    Par deathwing dans le forum Composants
    Réponses: 3
    Dernier message: 17/05/2004, 17h39
  4. [TP]TP7/XP : bug d'affichage
    Par art dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 17/04/2004, 22h20

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