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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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 émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    a première vue, ca doit être du au look and feel...

  3. #3
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    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 éclairé
    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
    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 éclairé
    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
    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 éclairé
    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
    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 confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Pourquoi appelle-tu updateUI() ?

+ 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