Sélectionner un noeud dans un jTree

Fermé
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 - 10 mai 2012 à 15:38
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 - 21 mai 2012 à 13:19
Bonjour,

je suis novatrice en java,et je doit utiliser des jTrees,j'ai arrivé a créée en programmation un Jtree,mais je ne sais pas comment faire lorsque je sélectionne un noeud de la Tree une fenêtre s'ouvre,avec quel méthode je peut faire ça et merciiiiiiiiiiiiiiiiiiii si quelqu'un m'aide

voici mon code:

  rootnode = new DefaultMutableTreeNode("Membres"); 
        
        treeModel = new DefaultTreeModel(rootnode); 
        jTree1.setModel(treeModel); 
        
        ntemp = new DefaultMutableTreeNode("xxxxxxxxxxx"); 
        rootnode.add(ntemp);


// Icon Render 
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) jTree1.getCellRenderer(); 
renderer.setLeafIcon(subIcon); 
renderer.setClosedIcon(closedIcon); 
renderer.setOpenIcon(openIcon);

2 réponses

Utilisateur anonyme
20 mai 2012 à 11:15
Salut!

Tu dois ajouter un TreeSelectionListener à ton arbre. C'est la méthode "valueChanged()" qui est invoquée chaque fois que la sélection change dans l'arbre et c'est dans cette méthode que tu peux récupérer le noeud sélectionné pour effectuer le traitement que tu désires.

package hacktrack;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;

public class JTreeNodeSelector extends JFrame implements TreeSelectionListener {

	private DefaultMutableTreeNode rootnode;
	private TreeModel treeModel;
	private JTree jTree1;
	private DefaultMutableTreeNode ntemp;
	private JTextArea textArea;

	public JTreeNodeSelector() {
		super("Sélection d'un noeud dans un JTree - Démo");
		initialize();
	}

	private void initialize() {
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c = getContentPane();
		c.setLayout(new BorderLayout());

		jTree1 = new JTree();
		jTree1.setPreferredSize(new Dimension(320,200));
		rootnode = new DefaultMutableTreeNode("Membres");
		treeModel = new DefaultTreeModel(rootnode);
		jTree1.setModel(treeModel);
		jTree1.addTreeSelectionListener(this);
		ntemp = new DefaultMutableTreeNode("Noeud 000");
		rootnode.add(ntemp);
		jTree1.expandRow(0);
		c.add(jTree1, BorderLayout.CENTER);
		
		textArea = new JTextArea();
		textArea.setAutoscrolls(true);
		JScrollPane jsp = new JScrollPane(textArea);
		jsp.setPreferredSize(new Dimension(320,100));
		jsp.setBorder(BorderFactory.createTitledBorder("Noeuds sélectionnés"));
		c.add(jsp,BorderLayout.SOUTH);

	}

	@Override
	public void valueChanged(TreeSelectionEvent e) {
		JTree tree = (JTree) e.getSource();
		DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
				.getLastSelectedPathComponent();
		if (selectedNode == null)
			return;
		Object nodeInfo = selectedNode.getUserObject();
		if(nodeInfo instanceof String)
			textArea.append((String)nodeInfo+"\n\r");
			
	}

	public static void main(String[] args) {
		JTreeNodeSelector demo = new JTreeNodeSelector();
		demo.pack();
		demo.setVisible(true);

	}

}



;-)
0
hayfa1200 Messages postés 70 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 16 mars 2015 1
21 mai 2012 à 13:19
merci HackTrack pour l'aide :D
0