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 :

Problème avec un ListSelectionListener


Sujet :

AWT/Swing Java

  1. #1
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372
    Par défaut Problème avec un ListSelectionListener
    Bonsoir,

    Lors de l'initialisation de ma classe (un JDialog contenant une JList), j'ai une Exception :

    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
    22
    23
    24
    25
    26
    27
    28
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at gui.dialog.NewFileWizard2.<init>(NewFileWizard2.java:246)
            at action.Dialog.showNewFileWizard(Dialog.java:40)
            at gui.dialog.NewFileWizard1$4.actionPerformed(NewFileWizard1.java:240)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
            at java.awt.Component.processMouseEvent(Component.java:5488)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
            at java.awt.Component.processEvent(Component.java:5253)
            at java.awt.Container.processEvent(Container.java:1966)
            at java.awt.Component.dispatchEventImpl(Component.java:3955)
            at java.awt.Container.dispatchEventImpl(Container.java:2024)
            at java.awt.Component.dispatchEvent(Component.java:3803)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
            at java.awt.Container.dispatchEventImpl(Container.java:2010)
            at java.awt.Window.dispatchEventImpl(Window.java:1774)
            at java.awt.Component.dispatchEvent(Component.java:3803)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    J'ai découvert que cela veneai de mon ListSelectionListener dont voici le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //Si on selectionne un objet dans la liste
            lstActivite.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
     
                    // Recupere la valeur de l'objet et la convertit en chaine'
                    String value = String.valueOf(lstActivite.getSelectedValue());
                    // place la valeur dans le champs valeur
                    fldValeur.setText(value);
     
                } 
     
            });
    J'utlise un DefaultListModel, et je pense que ça vient de là car quand j'utilise un AbstractListModel tout se passe sans problème.
    Hors, j'ai d'un DefaultListModel afin de pouvoir ajouter des éléments à ma JList.

    Merci de bien vouloir m'éclairer

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par Orian
    J'utlise un DefaultListModel, et je pense que ça vient de là car quand j'utilise un AbstractListModel tout se passe sans problème.
    Hors, j'ai d'un DefaultListModel afin de pouvoir ajouter des éléments à ma JList.
    Personellement j'utilise un AbstractListModel auquel j'ajoute une méthode pour modifer les éléments qui a à peu près cette tête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void setData(Donnees d) {
            this.data = d;
            //on avertit la liste que le modèle a changé
            this.fireContentsChanged(this,0,this.getSize()-1);
     
        }
    Voilà, en esperant t'avoir aidé.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372
    Par défaut
    Bon je crois que ça m'aide...Mais peut tu m'expliquer le parce que je comprend pas...Et netbeans non plus...

  4. #4
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    c'est juste un exemple ça...
    data represente les données de ton modèle, ça peut étre des string,des double,...

    Supposons que ta JList affiche une liste de nom, des string donc.
    Ton modèle a alors comme attribut une liste de string, par exemple un tableau qu'on nommera donnees.
    La méthode devient alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void setData(String[] d) {
            this.donnees = d;
            //on avertit la liste que le modèle a changé
            this.fireContentsChanged(this,0,this.getSize()-1);
     
        }


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372
    Par défaut
    Désolé je pose des bêtes question mais je rame...Je ne dois plus être habitué à la chaleur...

    Où je met ça et comment je l'appelle ? (sous entendu la méthode que tu me donne).

    Merci er désolé si je t'embête...

  6. #6
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Moi aussi j'aime bien poser des questions bêtes : ton exception pointe vers quelle ligne?
    Ce ne serait pas celle-là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String value = String.valueOf(lstActivite.getSelectedValue());
    avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lstActivite.getSelectedValue()
    qui serait null et une méthode qui crasherait?...

    Sinon pour te répondre, si tu utilises la méthode d'afrikha, tu dois créer une classe qui étend AbstractListModel et tu ajoutes la méthode dans cette classe.

    Après, tu l'appelles quand tu veux modifier les données de ta liste, en passant en paramètre toutes les données que doit contenir ta liste.

  7. #7
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372
    Par défaut
    Bon, je n'aime pas la technique afrikha parce que je dois réécrire toute la table et que je suis un feinéant

    Donc je vais garder mon DefaultListModel qui me permet de rajouter des éléments en une seule ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model.addElement("Mon element");
    Seulement voilà pour rajouter mes éléments par défaut dans la liste je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0 ; i<strings.length ; i++){
            // Insère les valeurs dans la liste
            model.addElement(strings[i]);
            }
    Et mon ListSelectionlistener se trouve à la fin du constructeur vous penser que...

  8. #8
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Pas forcément...
    Si tu utilises un AbstractListModel pour stocker tes donnes, tu peux te créer une méthode qui crée un nouveau tableau contenant tous les éléments de ta liste plus celui que tu veux ajouter.
    C'est fait en 2 minutes.

    Surtout si tu utilises une ArrayList au lieu d'un tableau pour stocker tes données, à ce moment-là, t'as juste à ajouter un élément à ta liste de données au lieu de recopier le tableau avant d'ajouter ton élément...

    PS : tu n'as pas répondu à ma question...

  9. #9
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372
    Par défaut
    Pour ta question , ça poitait bien sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String value = String.valueOf(lstActivite.getSelectedValue());
    Pour ce qui est du problème c'est règler...je sais pas comment j'ai retesté et ça marche donc, ne touchons à rien...

    Merci à tous pour l'aide. Je sais pas quel étais le problème ni comment il s'est résolu mais c'est résolu, et pour moi, et c'est l'essentiel

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

Discussions similaires

  1. Problème avec un ListSelectionListener (CastException!)
    Par bakaratoun dans le forum Composants
    Réponses: 2
    Dernier message: 27/02/2009, 00h11
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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