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] Rechercher et sélectionner un élément


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 42
    Points : 35
    Points
    35
    Par défaut [JTree] Rechercher et sélectionner un élément
    Bonjour

    Je cherche comment rechercher et sélectionner un élément dans un JTree à partir du code. En gros j'ai quelque chose dans ce genre :
    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 DefaultMutableTreeNode getTreeNode()
    	{
    		DefaultMutableTreeNode tree = new DefaultMutableTreeNode(getName());
    		// children = ArrayList<Data>
    		for (int i = 0; i < children.size(); i++ )
    			tree.add(new DefaultMutableTreeNode(children.get(i)));
    		return tree;
    	}
     
    	public JTree getJTree()
    	{
    		JTree jtree = new JTree(getTreeNode());
    		return jtree;
    	}
    Ensuite dans ma fonction recherche, je récupère le "children.get(n)" qui correspond et le JTree, mais je ne trouve pas de fonction dans le JTree qui me permette de chercher ou au moins comparer les éléments du JTree avec l'élément que je récupère ...

    J'ai essayer cette fonction :
    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
    public void actionPerformed(ActionEvent e)
    		{
    			Data data = getElement(searchField.getText());
    			System.out.println(searchField.getText());
    			if(data != null)
    			{
    				System.out.println("Search");
    				int row = -1;
    				JTree tree = getTree();
    				for(int i = 0; i < tree.getRowCount(); i++)
    				{
    					if(((DefaultMutableTreeNode) tree.getComponent(i)).getUserObject().equals(data))
    					{
    						System.out.println("Find");
    						row = i;
    						break;
    					}
    				}
    				if(row != -1)
    					tree.setSelectionRow(row);
    			}
    		}
    Mais c'est juste de la merde, je peux déjà pas cast le (DefaultMutableTreeNode) tree.getComponent(i) alors bon, je doit pas avoir bien compris :s

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    J'ai trouvé, je poste mon code pour ceux que ça intéressent :
    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
    		// Fonction de recherche
    		private TreePath find(TreePath parent, Object object)
    		{
    			DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent.getLastPathComponent();
     
    			if (node.isLeaf())
    			{
    				if (node.getUserObject().equals(object))
    					return parent;
    				else
    					return null;
    			}
     
    			for (Enumeration<?> e = node.children(); e.hasMoreElements();)
    			{
    				DefaultMutableTreeNode n = (DefaultMutableTreeNode) e.nextElement();
    				TreePath path = parent.pathByAddingChild(n);
    				TreePath result = find(path, object);
     
    				if (result != null)
    					return result;
    			}
     
    			return null;
    		}
     
    		// Fonction de clic sur le bouton
    		@Override
    		public void actionPerformed(ActionEvent e)
    		{
    			Data data = getElement(searchField.getText());
    			if (data != null)
    			{
    				JTree tree = getTree();
    				// Ligne pour sélectionner l'élément dans l'arbre (data peut être de n'importe quel type)
    				tree.setSelectionPath(find(tree.getPathForRow(0).getParentPath(), data));
    			}
    		}

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

Discussions similaires

  1. Sélectionner un élément dans une liste multiple
    Par sourivore dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/03/2006, 11h47
  2. JTree : recherche et sélection de noeud
    Par semby dans le forum Composants
    Réponses: 1
    Dernier message: 06/03/2006, 11h51
  3. [TTreeview] Comment sélectionner un élément de l'arbre ?
    Par altahir007 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/04/2005, 13h44
  4. Réponses: 2
    Dernier message: 10/05/2004, 11h20
  5. Pré-sélectionner un élément d'une combobox
    Par delphim dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2003, 15h26

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