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 noeud sélectionné


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    110
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 110
    Par défaut JTree noeud sélectionné
    Bonjour,

    J'ai implémenté un JTree dans mon application, qui va réagir comme une sorte de menu. Suivant le noeud cliqué, je modifie mon panel central (pour ceux qui voient, j'essai de faire les mêmes réactions que dans iTunes).
    Pour l'instant, cela marche très bien. Mon problème arrive lorsqu'un nouveau noeud va être créé, comment je peux faire un listener dessus si je ne connais pas son nom ...

    Je ne sais pas si vous me comprenez
    Si vous avez besoins de plus d'informations, n'hésitez pas !

    Merci d'avance

  2. #2
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    Je ne comprend pas trés bien en effet... car le listener tu l'applique sur ton JTree... par sur une feuille en particulier... Mais si tu pouvais poster un peu de code ca serai plus simple...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 65
    Par défaut
    Bonjour,

    en effet tu mets un listener sur ton arbre comme ci-dessous

    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
     
        _tree.addTreeSelectionListener(new TreeSelectionListener()
        {
          // qd l'utilisateur clique sur un noeud on affiche les informations du noeud
          // sélectionné
          public void valueChanged(TreeSelectionEvent evt)
          {
            if (evt.getNewLeadSelectionPath() != null)
            {
              // récupérer le noeud sélectionné
              DefaultMutableTreeNode node = (DefaultMutableTreeNode)  
                               evt.getNewLeadSelectionPath().getLastPathComponent();
     
              // récupération des données associées au noeud pour les afficher 
              ..........
            }
          } 
        }

  4. #4
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Citation Envoyé par KeKeMaN
    Bonjour,

    J'ai implémenté un JTree dans mon application, qui va réagir comme une sorte de menu. Suivant le noeud cliqué, je modifie mon panel central (pour ceux qui voient, j'essai de faire les mêmes réactions que dans iTunes).
    Pour l'instant, cela marche très bien. Mon problème arrive lorsqu'un nouveau noeud va être créé, comment je peux faire un listener dessus si je ne connais pas son nom ...

    Je ne sais pas si vous me comprenez
    Si vous avez besoins de plus d'informations, n'hésitez pas !

    Merci d'avance
    Salut,
    J'ai fait pareil dans l'appli que j'ai développé en stage. Pour y parvenir j'ai mis un listener sur la sélection du JTree, puis à chaque noeud du JTree j'ai ajouté en tant que user object mon JPanel. Comme ça, à chaque clic, j'affiche le JPanel correspondant au noeud sélectionné. Cherche dans la Javadoc, il doit y avoir une méthode setUserObject dans la classe DefaultMutableTreeNode.

    ++

  5. #5
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    Moi j'ais créé une classe etendue de DefaultMutableTreeNode... voici ce que cela donne...


    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
    public class WizardTreeNode extends DefaultMutableTreeNode
    {
        private String m_table;
     
        public WizardTreeNode ()
        {
            //Herite de la classe DefaultMutableTreeNode
            super();
            setUserObject(null);
            m_table = null;
        }
     
        public WizardTreeNode (String table, String lib)
        {
            this ();
            if (table != null && table.equals (lib))
            {
                System.out.println (table);
            }
            setUserObject(lib);
            m_table = table;
        }
     
        public String getTable()
        {
            return m_table;
        }
     
        public void setTable (String table)
        {
            m_table = table;
        }
    }
    Je ne sais pas si c'est ce que tu recherche mais j'ais une appli dans laquel j'ais un listener sur mon tree... J'espère avoir pu t'aider

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    110
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 110
    Par défaut
    Pour l'instant j'avait fait ça :
    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
     
    public class EcouteurArbre implements TreeSelectionListener {
     
    	private Controleur controleur;
     
    	public EcouteurArbre(Controleur controleur) {
    		this.controleur = controleur;
    	}
     
    	public void valueChanged(TreeSelectionEvent e) {
    		TreePath tp = controleur.arbreDocument.getSelectionPath();
    		DefaultMutableTreeNode noeud = (DefaultMutableTreeNode) tp.getLastPathComponent();
     
    		if(noeud == controleur.arbreDocument.recherches) {
    			controleur.fenetreGeneral.zones.setRightComponent(controleur.fenetreRecherches);
    		} else {
    			if(noeud == controleur.arbreDocument.transferts) {
    				controleur.fenetreGeneral.zones.setRightComponent(controleur.fenetreTransferts);
    			} else {
    				controleur.fenetreGeneral.zones.setRightComponent(controleur.tableAudio);
    			}
    		}
    	}
     
    }
    Le problème, c'est si j'ajoute un nouveau noeud dans mon arbre, je ne peux pas faire de tests dessus vu ke je le connais pas !
    Je sais pas si ca vous aide à mieux comprendre ...

    Spinoza23, très bonne idée, je vais m'y penché !
    schniouf, je veux bien un exemple plus concret de ton code !

    Sinon j'avais vu une exemple dans la FAQ Java sur les JTree, mais à quoi correspond la classe Page ...

    Merci pour vos réponses !!

  7. #7
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    Ou es ce que tu as trouvé cette classe page?? histoire d'y jetter un coup d'oeil et te renseigner si je le peu...

    Le lien vers la FAQ java concernant le JTree : http://java.developpez.com/faq/gui/?...ingJTableJTree

    Un tuto sur les JTree

    J'espere que tout cela pourra t'aider

  8. #8
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    OK, voilà l'idée de mon code :

    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
    /**
     * Classe représentant un noeud du JTree
    */
    public class NavigationTreeNode extends DefaultMutableTreeNode
    {
    	private JPanel panel ;
     
    	public NavigationTreeNode( String text, JPanel panel ) {
    		super( text ) ;
    		this.panel = panel ; // il s'agit du JPanel à afficher lors du clic sur le noeud
    	}
     
    	public JPanel getPanel() {
    		return panel ;
    	}
    }
    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
    public class MaFrame extends JFrame
    {
       protected JPanel oldPanel = null ;
     
       public MaFrame() {
          // constructeur
       }
     
       /** Change de vue */
       public void switchPanel( JPanel newPanel ) {
          if ( oldPanel != null )
             this.getContentPane().remove( oldPanel ) ; // Si il y avait une vue précédente, on l'enlève
          this.getContentPane().add( newPanel, BorderLayout.CENTER ) ; // Ajout de la nouvelle vue
          oldPanel = newPanel ;
          this.validate() ;
       }
    }
    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
    public class EcouteurArbre implements TreeSelectionListener {
     
    	private JTree tree;
    	private MyFrame frame ;
     
    	public EcouteurArbre(JTree tree, MyFrame frame) {
    	        this.tree = tree ;
    		this.frame = frame ;
    	}
     
    	public void valueChanged(TreeSelectionEvent e) {
    		TreePath tp = tree.getSelectionPath();
    		NavigationTreeNode noeud = (NavigationTreeNode ) tp.getLastPathComponent(); // Récup du noeud sélectionné
    		frame.switchPanel( noeud.getPanel() ) ; // On affiche le JPanel contenu dans le noeud
    	}
     
    }
    Tu comprend ce que j'ai fait ? Avec les commentaires ça devrait aller.
    C'est juste l'idée, à toi de l'adapter à tes besoins !

    ++

  9. #9
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    110
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 110
    Par défaut
    Citation Envoyé par Spinoza23
    Ou es ce que tu as trouvé cette classe page?? histoire d'y jetter un coup d'oeil et te renseigner si je le peu...

    Le lien vers la FAQ java concernant le JTree : http://java.developpez.com/faq/gui/?...ingJTableJTree
    Ben je me trompe peut-être, mais c'est quoi cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page myPage = (Page) myNode.getUserObject();
    Sinon merci beaucoup à tous, je vais essayer tout ca, et je vous redis

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

Discussions similaires

  1. [JTree] Mise à jour d'un JPanel selon le noeud sélectionné dans le JTree
    Par Carlito95 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 23/03/2010, 21h42
  2. JTree et les noeuds sélectionnés
    Par soujava dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 11/06/2008, 22h37
  3. [JTree] Faire apparaître visuellement le noeud sélectionné
    Par Bobsinglar dans le forum Composants
    Réponses: 3
    Dernier message: 03/06/2005, 17h26
  4. [JTree] Récupérer le noeud sélectionné, sans événement
    Par Bobsinglar dans le forum Composants
    Réponses: 4
    Dernier message: 26/05/2005, 19h06
  5. [JTree]noeud parent dans un jtree
    Par wassimb dans le forum Composants
    Réponses: 5
    Dernier message: 22/03/2004, 15h06

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