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

avec Java Discussion :

Problème avec ItemStateChanged (pour Combobox)


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut Problème avec ItemStateChanged (pour Combobox)
    Bonjour,
    j'ai plusieurs Combobox que je modifie lorsque je choisi dans dans une autre Combo un élement.

    Souci c'est que j'ai des erreur d'exéctution. et je ne sais pas pourquoi.

    Voici donc mon bout de code et l'erreur.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    private void jS201ItemStateChanged(java.awt.event.ItemEvent evt) {
        jS206.removeAllItems();
        if (jS201.getSelectedIndex()==0||jS201.getSelectedIndex()==1)
        {
            jS206.addItem("868 - 868.6MHz");
            jS206.addItem("868.6 - 868.7MHz");
            jS206.addItem("868.7 - 869.2MHz");
            jS206.addItem("869.2 - 869.25MHz");
            jS206.addItem("869.25 - 869.3MHz");
            jS206.addItem("869.3 - 869.4MHz");
            jS206.addItem("869.4 - 869.65MHz");
            jS206.addItem("869.65 - 869.7MHz");
            jS206.addItem("869.7 - 870MHz");
        }
        else
        {
            jS206.addItem("868 - 868.6MHz");
            jS206.addItem("868.7 - 869.2MHz");
            jS206.addItem("869.4 - 869.65MHz");
            jS206.addItem("869.7 - 870MHz");
        }
    }
     
    private void jS206ItemStateChanged(java.awt.event.ItemEvent evt) {
     
     
        jS202.removeAllItems();
        jS200.removeAllItems(); 
        if (jS206.getSelectedItem().equals("869.7 - 870MHz"))
        { 
            jS202.addItem("1mW");
            jS202.addItem("3mW");
        }
        else
        {
            if ((jS206.getSelectedItem().equals("868.6 - 868.7MHz"))||(jS206.getSelectedItem().equals("869.2 - 869.25MHz"))||(jS206.getSelectedItem().equals("869.25 - 869.3MHz"))||(jS206.getSelectedItem().equals("869.3 - 869.4MHz"))||((jS201.getSelectedIndex()==1)&&((jS206.getSelectedItem().equals("869.4 - 869.65MHz"))||(jS206.getSelectedItem().equals("869.65 - 869.7MHz")))))
            {
                jS202.addItem("1mW");
                jS202.addItem("3mW");   
                jS202.addItem("8mW");
            }
            else
            {
                jS202.addItem("1mW");
                jS202.addItem("3mW");
                jS202.addItem("8mW");
                jS202.addItem("25mW");
            }
        }
     
     
     
        if ((jS206.getSelectedItem().equals("868.6 - 868.7MHz"))||(jS206.getSelectedItem().equals("869.3 - 869.4MHz")))
        {
           for (int i=0; i<=3;i++)
           {
               jS200.addItem(i);
           }
        }
        else
        {
            if ((jS206.getSelectedItem().equals("868 - 868.6MHz"))&&((jS201.getSelectedIndex()==0)||(jS201.getSelectedIndex()==1)))
            {
               for (int i=0; i<=11;i++)
               {
                   jS200.addItem(i);
               }
            }
            else
            {
                if (((jS201.getSelectedIndex()==0)||(jS201.getSelectedIndex()==1))&&((jS206.getSelectedItem().equals("868.7 - 869.2MHz"))||(jS206.getSelectedItem().equals("869.4 - 869.65MHz"))))
                {
                   for (int i=0; i<=9;i++)
                   {
                       jS200.addItem(i);
                   }
                }
                else
                {
                    if ((((jS201.getSelectedIndex()==0)||(jS201.getSelectedIndex()==1))&&((jS206.getSelectedItem().equals("869.7 - 870MHz"))))||((jS201.getSelectedIndex()==2)&&(jS206.getSelectedItem().equals("868 - 868.6MHz"))))
                    {
                            for (int i=0; i<=5;i++)
                            {
                                jS200.addItem(i);
                            }
                    }
                    else
                    {
                        if (((jS201.getSelectedIndex()==2)&&(jS206.getSelectedItem().equals("869.7 - 870MHz")))||((jS201.getSelectedIndex()==3)&&(jS206.getSelectedItem().equals("868 - 868.6MHz"))))
                        {
                            for (int i=0; i<=2;i++)
                            {
                                jS200.addItem(i);
                            }
                        }
                        else
                        {
                            if (((jS201.getSelectedIndex()==2)||(jS201.getSelectedIndex()==3))&&(jS206.getSelectedItem().equals("869.4 - 869.65MHz")))
                            {
                                jS200.addItem("0");
                            }
                            else
                            {
                                if ((jS201.getSelectedIndex()==2)&&(jS206.getSelectedItem().equals("868.7 - 869.2MHz")))
                                {
                                    for (int i=0; i<=4;i++)
                                    {
                                        jS200.addItem(i);
                                    }
                                }
                                else
                                {
                                    jS200.addItem("0");
                                    jS200.addItem("1");                                
                                }
                            }
                        }
                    }
                }
            }
        }    
    }
    et l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at blackbox.Main.jS206ItemStateChanged(Main.java:968)
    j'ai essai de mettre un sleep ou un wait pas de changement.

    Merci de votre aide

  2. #2
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    slt ,à quoi correspond la ligne 968 ??

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        if (jS206.getSelectedItem().equals("869.7 - 870MHz"))

  4. #4
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    ben visiblement jS206 est à null ... sais tu d'où cela vient ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    c'est que lorsque je change jS201 cela modifie JS206 mais il se lance automatiquement et je sais pas comment lui dire d'attendre que jS201ItemStateChanged a finit son exécution.

  6. #6
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    c'est que lorsque je change jS201 cela modifie JS206
    De plus c'est normal qu'il "se lance automatiquement" vu qu'il y'a un ItemChangeListener sur jS206 qui est là pour ça...

    Je pense que c'est plus un problème de conception au final.
    Quelle est la mofif que tu fais sur jS206 depuis jS201 ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    car jS206 dépend des valeurs de jS201

  8. #8
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par Bouboukick Voir le message
    a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        if (jS206.getSelectedItem().equals("869.7 - 870MHz"))
    Il est préférable de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        if ("869.7 - 870MHz".equals(jS206.getSelectedItem()))
    ceci évite le null pointer exception ...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    ok
    je vais tester et je tien au courant

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    toujours une erreur dsl

  11. #11
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    et bien c'étais sur que ça n'enleverait pas l'erreur... c'est juste que c'est plus propre...
    Moi je me demande ce que tu fais depuis jS201 puis rendre le jS206 null ??
    peux tu donner cette partie du code stp ?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    Bien sur mais elle est déja présente dans mon premier post.
    la revoici :

    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
    private void jS201ItemStateChanged(java.awt.event.ItemEvent evt) {
        jS206.removeAllItems();
        if (jS201.getSelectedIndex()==0||jS201.getSelectedIndex()==1)
        {
            jS206.addItem("868 - 868.6MHz");
            jS206.addItem("868.6 - 868.7MHz");
            jS206.addItem("868.7 - 869.2MHz");
            jS206.addItem("869.2 - 869.25MHz");
            jS206.addItem("869.25 - 869.3MHz");
            jS206.addItem("869.3 - 869.4MHz");
            jS206.addItem("869.4 - 869.65MHz");
            jS206.addItem("869.65 - 869.7MHz");
            jS206.addItem("869.7 - 870MHz");
        }
        else
        {
            jS206.addItem("868 - 868.6MHz");
            jS206.addItem("868.7 - 869.2MHz");
            jS206.addItem("869.4 - 869.65MHz");
            jS206.addItem("869.7 - 870MHz");
        }
    }
    Merci bien de votre aide

  13. #13
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    j'ai bien une solution pas tiptop en attendant de trouver mieux... mais ça devrait marcher :
    dans l'ItemListener de jS206 met un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       if( !modifEncours ) {
          // ton code de l ItemListener
     
      }
    et dans l'ItemListener de jS201 met au debut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        modifEncours  = true;
    et à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        modifEncours  = false;
    c'est un peu sauvage mais ça marchera

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    oui ca marche g tester
    mais le souci
    c que
    il se peut que je change seulement jS206 des fois
    donc si je fait ca, je ne pourrai pas y acceder

    merci en tout cas

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Points : 35
    Points
    35
    Par défaut
    J'ai tout de même testé ton idée est cela marche

    Merci à toi

    Mais si quelqu'un à une autre solution je suis prenant (car tu disais que c'était une méthode sauvage lol)

    Merci en tout cas

  16. #16
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    il se peut que je change seulement jS206 des fois
    donc si je fait ca, je ne pourrai pas y acceder
    ça devrait marcher meme si tu modifie directement jS206...
    vu que l itemListener de js201 met la variable à false à la fin , si tu as initialisé cette variable à false il n'y a aps de problèmes..

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

Discussions similaires

  1. Petit problème avec GCC pour l'Unicode...
    Par Nico*3-3 dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 29/01/2006, 17h12
  2. [debutant][awt] Pb avec ItemStateChanged dans combobox
    Par cosmos.1097 dans le forum Composants
    Réponses: 2
    Dernier message: 30/06/2005, 18h38
  3. problème avec strtok pour récupérer les vides
    Par manikou dans le forum MFC
    Réponses: 4
    Dernier message: 02/06/2005, 20h08
  4. Réponses: 5
    Dernier message: 27/08/2003, 11h45

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