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

Composants Java Discussion :

Deux passages dans "addListSelectionListener.valueChange"


Sujet :

Composants Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut Deux passages dans "addListSelectionListener.valueChange"
    Bonjour,

    Je veux creer une Frame tout simple avec deux listes déroulantes (JList) dont la deuxieme est mise à jour par un click sur un élement de la premiere,

    J'ai donc une premiere liste liste à laquelle j'ai ajouté un gestionnaire d'évenement (cf ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JList liste = new JList(listModel);
    liste.addListSelectionListener(new ListSelectionListener() {
    		      public void valueChanged(ListSelectionEvent e) {
    ...
    }
    mais je ne sais pourquoi je passe deux fois dans la methode valuechange lorsque je clique sur un élement de la premiere liste, du coup, c'est tres génant de déclencher un seul évenement sur ma deuxieme liste !


    Merci de m'indiquer ce qui cloche ?

    Mugwump

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    tu passe une fois pour l'élément qui était sélectionné et qui se retrouve déselectionné, et tu passe une deuxième fois pour le nouvel élément sélectionné

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut
    Ah OK, merci. A quoi cette méthode peut elle bien servir dans ce cas ?

    Sinon, j'ai utilisé plutot gestionnaire d'evenement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    liste.addMouseListener(new MouseAdapter() {
     
    		      public void mousePressed(MouseEvent e) {
    ....
    }
    qui n'est déclenché qu'une seule fois. ca a l'air de fonctionner.
    Est-ce la solution la plus propre ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    Je ne sais pas si c'est la plus propre mais c'est également celle que j'avais utilisée lorsque j'avais rencontré ce problème et as l'intérêt de très bien fonctionner.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Hum et j'imagine que tu as pense a verifier la valeur de getValueIsAdjusting()
    sachant qu'un evenement de deselection precedera probablement un evenement de selection.

    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
    package test;
     
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.font.*;
    import java.awt.geom.*;
    import javax.swing.*;
    import javax.swing.event.*;
     
    /**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2006</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class TestListSelection extends JPanel implements ListSelectionListener {
      public TestListSelection() {
        JList list = new JList(new Object[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
        list.addListSelectionListener(this);
        setLayout(new BorderLayout());
        add(new JScrollPane(list), BorderLayout.CENTER);
      }
     
      /** Self-test main.
       *  @param args Arguments from the command-line.
       */
      public static void main(String ...args) {
        SwingUtilities.invokeLater(new Runnable() {
          /**
           * {@inheritDoc}
           */
          public void run() {
            JFrame frame = new JFrame("Test");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());
            frame.add(new TestListSelection(), BorderLayout.CENTER);
            frame.setSize(500, 400);
            frame.setVisible(true);
          }
        });
      }
     
      /**
       * {@inheritDoc}
       */
      public void valueChanged(ListSelectionEvent event) {
        System.out.println(event.getValueIsAdjusting() + " [" + event.getFirstIndex() + " " + event.getLastIndex() + "].");
      }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut
    Non, je ne teste pas la déselection car j'ai forcé une sélection unique sur ma liste.

    Merci

  7. #7
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    non ce qu'il essai de te dire c'est que tu dois faire une vérif


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (evt.getValueIsAdjusting())
    //traitement
    ainsi la fonction ne s'exécute qu'une fois

  8. #8
    Invité de passage
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Par défaut ajouter dans une jliste
    salut;
    je developpe avec java netbeans
    j cree deux listes et une bouton q permet de copier l'elemnt selectionné dans l'autre liste
    alors j manipule ce code :
    jList2.setListData(jList1.getSelectedValues() );
    mais chaque fois que j cliq qur le bouton l'lement precedent de la jList1 ecrase
    alors je v que la bouton s'ajoute dans la liste
    j'essaye avec jList2.addListSelectionListener( jList1.getSelectedValues() );
    mais ca marche pas malheureusement

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

Discussions similaires

  1. Passage d'un String PHP dans fonction javascript et quotes
    Par roukgreg dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/05/2013, 14h48
  2. Passage de deux variable dans l'url
    Par Sam 069 dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2006, 10h14
  3. Deux passages dans mon "execute" pour une seule soumission
    Par fabricew59 dans le forum Struts 1
    Réponses: 7
    Dernier message: 27/06/2006, 14h24
  4. Réponses: 5
    Dernier message: 15/04/2005, 14h22

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