Partage
  • Partager sur Facebook
  • Partager sur Twitter

JList

Confiqurer un écouteur pour les éléments d'une JList

    3 décembre 2018 à 13:58:18

    Bonjour. Je voudrais que des évènements soient déclenchés lorsqu'on sélectionne un élément d'une JList. Autant avouer je n'en ai pas bonne connaissance. Je vous présente donc mon code afin que vous puissiez me venir en aide.

    Merci d'avance

    JPanel pan = new JPanel();
    JPanel pan2 = new JPanel();
    
     
    //Les boutons
     
    nature = new JButton( new ImageIcon( "images DI/nature.jpg" )),
    histoire = new JButton( new ImageIcon( "images DI/histoire.jpg" )),
    géographie = new JButton( new ImageIcon( "images DI/géographie.jpeg" ));
     
     //les images et leurs labels
    ImageIcon amr = new ImageIcon( "images DI/Amérique.png"); 
    JLabel labAmérique = new JLabel(amr);
    
    ImageIcon afq = new ImageIcon( "images DI/Afrique.png"); 
    JLabel labAfrique = new JLabel(afq);
    
    ImageIcon eur = new ImageIcon( "images DI/Europe.png"); 
    JLabel labEurope = new JLabel(eur);
    
    ImageIcon as = new ImageIcon( "images DI/Asie.png"); 
    JLabel labAsie = new JLabel(as);
     
    //les listes
     
    String[] nat = {"eau", "terre", "air"};
    JList listeNature = new JList(nat);
     
     
    String[] hist = {"aitiquité","moyen age","temps modernes","temps contemporains"};
    JList listehist = new JList(hist);
     
     
    String[] geo = {"Afique","Amérique","Asie","Europe"};
    JList listegeo = new JList(geo);
     
     
    nature.addActionListener(btListener);
    géographie.addActionListener(btListener);
    histoire.addActionListener(btListener);
    
    
    ListSelectionListener menugeo = new menugeo();
    listegeo.addListSelectionListener(menugeo);
     
     
    
    class btListener implements ActionListener{
           
          public void actionPerformed(ActionEvent arg0) {
               
               
             if(arg0.getSource()  ==  nature)
                     
              {
                pan.add(listenature);
                  }
    
     
             if(arg0.getSource()  ==  geographie)
                     
              {
                pan.add(listegeo);
                  }
     
     
             if(arg0.getSource()  ==  histoire)
                     
              {
                pan.add(listehist);
                  }
               
             
                     
          }
          
        }
    
    class menugeo implements ListSelectionListener {
    	
    	@Override
    	public void valueChanged(ListSelectionEvent arg0) 
    
    		{
        if  (arg0.getSelectedIndex()  == "Afrique" )
            { pan2.add(labAfrique}
    
     if  (arg0.getSelectedIndex()  == "Europe" )
            { pan2.add(labEurope}
    
     if  (arg0.getSelectedIndex()  == "Asie" )
            { pan2.add(labAsie}
    
     if  (arg0.getSelectedIndex()  == "Amérique" )
            { pan2.add(labAmérique}
    }
    }
    }

    -
    Edité par DANASIntelecta 4 décembre 2018 à 11:47:47

    • Partager sur Facebook
    • Partager sur Twitter
      3 décembre 2018 à 20:44:29

      Peut-être

      JList.addListSelectionListener(new ListSelectionListener() {
        @Override
        public void valueChanged(ListSelectionEvent event)
        {
          // bla bla bla
        }
      }



      • Partager sur Facebook
      • Partager sur Twitter
      Merci, Cordialement.
        4 décembre 2018 à 12:08:30

        J'ai bien noté cette proposition.

        Mais en fait, mon plus grand problème c'est la méthode que je dois utiliser pour ce faire.

        J'en ai essayé plusieurs à l'instar de la suivante

         if  (arg0.getSelectedIndex()  == "Asie" )
                { pan2.add(labAsie}

        Mais cela ne fonctionne pas.

        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2018 à 12:35:44

          As-tu au moins lu ce que te renvoies cette methode?

          Si ton IDE ne te remonte pas une erreur fuit au plus vite

          -
          Edité par Tats'Yako 4 décembre 2018 à 12:36:26

          • Partager sur Facebook
          • Partager sur Twitter
          Un petit étudiant chinois perdu ^^'
            4 décembre 2018 à 19:28:18

            N'utilise pas "==" pour comparer autre chose que des nombres. Utilise plutôt object.equals(otherobject);

            • Partager sur Facebook
            • Partager sur Twitter
            Merci, Cordialement.
              4 décembre 2018 à 20:18:59

              Mais ya que moi que ça choque ...

              GetSelectedIndex() renvoie un int tu le compares a un String.

              Il manque une parenthèse a ton add et un point virgule...

              • Partager sur Facebook
              • Partager sur Twitter
              Un petit étudiant chinois perdu ^^'
                5 décembre 2018 à 10:44:12

                Merci déjà pour votre bonne volonté. Mais je n'y arrive toujours pas bien qu'ayant essayé vos propositions. Concrètement, je cherche l'équivalent de la méthode suivante:

                public void actionPerformed(ActionEvent arg0) {
                            
                //des évènements se déclanchent lorsqu'on clique sur un bouton
                            
                         if(arg0.getSource()  ==  nature)
                                  
                          { pan.add(listenature); }
                 
                
                         if(arg0.getSource()  ==  geographie)
                                  
                          { pan.add(listegeo); }
                  
                  
                         if(arg0.getSource()  ==  histoire)
                                  
                          { pan.add(listehist); }
                             }

                Mon objectif étant de déclencher des évènements lorsqu'on clique sur les éléments de la JList comme la suivante:

                String[] geo = {"Afique","Amérique","Asie","Europe"};
                JList listegeo = new JList(geo);

                Biensûr je me sers de

                 @Override
                    public void valueChanged(ListSelectionEvent arg0)
                 
                        {
                    if  .................. Afrique 
                        { pan2.add(labAfrique}
                 
                    if  .................... Europe
                        { pan2.add(labEurope}
                 
                    if  .................... Asie 
                        { pan2.add(labAsie}
                 
                    if  ......................Amérique
                        { pan2.add(labAmérique}
                }

                Les points représentent les lignes de codes qui me manquent.

                Merci encore de me venir en aide.



                • Partager sur Facebook
                • Partager sur Twitter
                  5 décembre 2018 à 15:01:09

                  @Override
                      public void valueChanged(ListSelectionEvent e)
                    
                          {
                      if (e.getSource().equals("Afrique"))
                          { pan2.add(labAfrique}
                    
                      if  (e.getSource().equals("Europe"))
                          { pan2.add(labEurope}
                    
                      if  (e.getSource().equals("Asie"))
                          { pan2.add(labAsie}
                    
                      if  (e.getSource().equals("Amérique"))
                          { pan2.add(labAmérique}
                  }

                  -
                  Edité par Emilien G. 5 décembre 2018 à 15:01:44

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Merci, Cordialement.
                    5 décembre 2018 à 17:56:43

                    GetSelectedValue().toString().equals("Afrique")

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Un petit étudiant chinois perdu ^^'
                      8 décembre 2018 à 12:59:43

                      Vos contributions m'ont conduit à écrire

                      (GetSelectedValue().toString().equals("Afrique"))



                      Résultat: plus d'erreur dans mon ide. Sauf que non seulement la sélection de ''Afrique'' n'exécute pas le

                      {pan2.add(labAfrique}

                      Mais ça fait planter toute la liste entière, voire toute l'application.

                      Je ne sais pas comment résoudre ça



                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 décembre 2018 à 20:57:04

                        Montre nous l'erreur avec le code
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Merci, Cordialement.

                        JList

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown