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 :

JComboBox action


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Par défaut JComboBox action
    Bonjour,

    J ai une JComboBox, qui correspond aux choix de racines de mon arbre (JTree), modifiable dans 2 cas. Quand l utilisateur choisit un des items, j aimerais recuperer l evenement pour changer la racine de mon arbre.

    De plus, quand la racine change effectivement, j aimerais pouvoir changer la liste de racines proposees.

    J ai donc procede de la maniere suivante:
    J ajoute cet actionListener a la JComboBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void actionPerformed(ActionEvent event)
       {
           setCurrentNode((MyTreeNode)directoryBoxModel.getSelectedItem());
       }
    avec la methode suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private void setCurrentNode(MyTreeNode current)
       {
          if(current == null)
          {
             return;
          }
          ((MyTreeModel)(tree.getModel()).setRoot(current);
          directoryBoxModel.contentsChanged();
     
       }
    la methode contentsChanged calcule son nouveau contenu en fonction de la nouvelle racine, et fait un fireContentsChanged(this, -1, -1); et un setSelectedItem(node).

    Le probleme est le suivant: cette methode modifie la combo, et donc appelle l actionPerformed. Donc je tourne en rond, et rien ne marche. Comment faire?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 137
    Par défaut
    Il ya toujours une manière simple mais pas très propre : avant de modifier ton ComboBox, tu suspends l'action associée puis tu la remets après les modifs. Du genre un boolean qui se met à false pendant la modif et que tu vérifies lors de l'actionPerformed.

    Ou bien tu mets un listener sur les items : addItemListener, qui, si je ne me trompe pas, n'écoutera que lors de la sélection par l'utilisateur.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Par défaut
    Bon c'est pas trés beau et il y a surement mieux, mais en attendant voici ce que je te propose :

    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
     
    public void actionPerformed(ActionEvent event)
       {
         if (!enModif) {
           setCurrentNode((MyTreeNode)directoryBoxModel.getSelectedItem());
           enModif = false;}
       }
     
    private void setCurrentNode(MyTreeNode current)
       {
          enModif = true;
          if(current == null)
          {
             return;
          }
          ((MyTreeModel)(tree.getModel()).setRoot(current);
          directoryBoxModel.contentsChanged();
     
       }
    Comme cela, il passera une premiere fois dans setCurrentNode et quand l'actionperformed sera appeler pour la deuxieme fois, il se finira sans rien faire et tu sortira du setCurrentNode.

    Il y a surement quelque chose de plus adapté dans la bibliothèque java, mais je n'ai pas le temps de chercher

    à plus

  4. #4
    Membre confirmé Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Par défaut
    En attendant peut etre de trouver plus effiicace, ca marche nickel!

    merci!

  5. #5
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Par défaut
    De rien, quand on peut rendre service

    n'oubli pas de mettre résolu si jamais tu ne compte pas chercher une meilleure solution

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

Discussions similaires

  1. JCombobox action sans cliquer
    Par peofofo dans le forum Composants
    Réponses: 5
    Dernier message: 23/08/2012, 14h35
  2. [JComboBox] Evenements uniquement sur action utilisateur
    Par ouarou dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2010, 15h25
  3. [JComboBox] Savoir de quelle liste provient l'action
    Par pascalouh dans le forum Composants
    Réponses: 5
    Dernier message: 04/08/2008, 14h22
  4. probleme action sur les JComboBox
    Par L4BiN dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 21/12/2006, 16h03
  5. associer une action a un jcombobox
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 04/08/2006, 10h59

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