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 :

[JTree] Re-selectionner une valeur déjà sélectionnée dans un JTree


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 25
    Points
    25
    Par défaut [JTree] Re-selectionner une valeur déjà sélectionnée dans un JTree
    Bonjour !

    Le fonctionnement de l'appli : j'ai un jtree avec une liste de fichier, lorsque je clic sur un noeud des infos s'affichent.
    Lorsque je modifie les infos : j'ai besoin d'actualiser le noeud du fichier et de le re-selectionner pour réafficher les infos.

    j'ai un jtree :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Jtree jtree
    jtree.addTreeSelectionListener(new ActionSelectionnerNoeud());
    Le listener de mon jtree :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class ActionSelectionnerNoeud implements TreeSelectionListener {
    	//Action appellée lorsque la selection de l'arbre change :
    	public void valueChanged(TreeSelectionEvent event) {		
    		//Mon action => affiche les infos du noeud		
    	}
    }
    La classe de validation des infos :
    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
    //Actualise un noeud et le selectionne dans l'arborescence et change son nom avec le paramètre d'entré
    public void actualiserNoeudSelectionne(String nouveauNom) {
     
    	//Noeud selectionné :
    	TreePath noeudSelectChemin = this.getSelectionPath();
     
    	//On récupère le dernier noeud du chemin :
    	DefaultMutableTreeNode dernierNoeudSelect = (DefaultMutableTreeNode) noeudSelectChemin.getLastPathComponent();		
     
    	//Changement du dernier noeud :		
    	dernierNoeudSelect.setUserObject(nouveauNom);
     
    	//Mise à jour du model :
    	((DefaultTreeModel) this.treeModel).nodeChanged(dernierNoeudSelect); // [1] Change le noeud, garde la selection 
     
    	//((DefaultTreeModel) this.treeModel).reload(); //[2]Actualise, deselectionne
     
    	//Re-selection du noeud pour actualisation des infos film :
            TreePath noeudFuturChemin = new TreePath(dernierNoeudSelect.getPath());
    	this.setSelectionPath(noeudFuturChemin);
    	this.scrollPathToVisible(noeudFuturChemin);
     
    }
    --> Le code actuel actualise bien le noeud mais ne le re-selectionne pas [1]
    --> si j'utilise le [2] : le noeud est actualisé, reselectionné mais 2fois !

    Comment faire pour que mon noeud soit re-selectionné (une seule fois) ??

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 25
    Points
    25
    Par défaut Simplification
    Finalement j'ai fais deux méthodes, une pour renommer, l'autre pour sélectionner un composant dans mon arbre.

    Voiçi la méthode de sélection d'un composant dans l'arbre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public void selectionneNoeud(TreePath noeudASelect) {
     
    	//Noeud a sélectionner :
    	TreePath noeudSelectChemin = noeudASelect;
     
    	//On récupère le dernier noeud du chemin :
    	DefaultMutableTreeNode dernierNoeudSelect = (DefaultMutableTreeNode) noeudSelectChemin.getLastPathComponent();		
            TreePath noeudFuturChemin = new TreePath(dernierNoeudSelect.getPath());		
     
            //Sélection du noeud :
            this.setSelectionPath(null);
            this.setSelectionPath(noeudFuturChemin); //Ne fonctionne pas si chemin déjà selectionné
    	this.scrollPathToVisible(noeudFuturChemin);		
    }
    Le seul problème que j'ai c'est que lorsque je fait mon this.setSelectionPath(noeudFuturChemin) mon listener ne fait pas l'action si le chemin est déjà selectionné.
    Je suis obligé d'ajouter le this.setSelectionPath(null); ce qui a pour effet de doubler l'appel au listener et de faire 2x les traitements...

    Comment éviter ça ?

Discussions similaires

  1. [Drupal] Selectionner une valeur par défaut dans un formulaire de type select
    Par clem9085 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/11/2014, 14h28
  2. Réponses: 3
    Dernier message: 23/06/2014, 10h21
  3. [AC-2007] Selectionner une valeur de champs dans un sous formulaire
    Par Florinet dans le forum IHM
    Réponses: 3
    Dernier message: 05/10/2011, 09h27
  4. Réponses: 8
    Dernier message: 15/07/2008, 17h41
  5. Réponses: 6
    Dernier message: 06/09/2006, 14h50

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