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 :

TreeModel avec Tableau


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 38
    Points
    38
    Par défaut TreeModel avec Tableau
    Bonjour à tous,

    Petite question sur l'utilisation de l'interface TreeModel

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    public class CommentTreeModel implements TreeModel
    {
     
        private String [] tab = null;
     
        public CommentTreeModel(String [] tabls)
        {
            tab = tabls;
     
        }
     
        public Object getRoot()
        {
            return tab;
        }
     
        public Object getChild(Object parent, int index)
        {
            if (parent == null)
                return (String) "Commentaire";
            else
                return (String) tab[index];
        }
     
        public int getChildCount(Object parent)
        {
            return tab.length;
        }
     
        public boolean isLeaf(Object node)
        {
            if (node == tab)
                return false;
            else
                return true;
        }
     
        public void valueForPathChanged(TreePath path, Object newValue)
        {
            //rien
        }
     
        public int getIndexOfChild(Object parent, Object child)
        {
            int index = 0;
            for (int i=0; i<tab.length; i++)
            {
                if (tab[i].equals((String)parent))
                {
                    index = i;
                    break;
                }
            }
            return index;
        }
     
        public void addTreeModelListener(TreeModelListener l) 
        {
            //rien
        }
     
        public void removeTreeModelListener(TreeModelListener l) 
        {
            //rien
        }
     
        public static void main(String [] args)
        {
            JFrame f = new JFrame("");
            f.setSize(500,500);
            f.setLocationRelativeTo(null);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            JTree t = new JTree();
            String [] s =  {"Hello","Bonjour","Au revoir"};
            t.setModel(new CommentTreeModel(s));
            t.setOpaque(true);
     
     
            JPanel p = new JPanel(new BorderLayout());
            p.add(t);
            f.getContentPane().add(p);
            f.setVisible(true);
        }
    }
    ce que je ne comprend pas c'est pour quoi le premier noeud j'ai sur l'arbre l'adresse de la variable tab et non la chaine de caractères "Commentaires" comme spécifier à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     public Object getChild(Object parent, int index)
        {
            if (parent == null)
                return (String) "Commentaire";
            else
                return (String) tab[index];
        }
    En vous remerciant de votre réponse..

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Ta question n'est pas très claire.
    La méthode "getChild" n'est pas appelée avec un parent à null, mais avec le noeud à déployer. Tu ne peux donc pas avoir la chaîne "Commentaire".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Désolé je reformule la question:

    J'ai un tableau de string. Je souhaiterai afficher ce tableau avec Jtree (je sais un tableau ferait l'affaire mais je compte évoluer après).

    J'implémente l'interface TreeModel pour faire en sorte d'avoir "hello","bonjour","au revoir" comme <<feuille>>. Ca marche très bien. Par contre le noeud racine je souhaiterai afficher "Commentaires" mais je n'y arrive pas...

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Ah... Alors il faut.... modifier le retour de la méthode "getRoot" pour qu'elle envoie "Commentaires".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Si getRoot renvoi "Commentaire" alors je n'ai plus que la chaine "Commentaire" dans mon arbre....

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 8
    Points : 14
    Points
    14
    Par défaut
    M'étant beaucoup inspiré je poste ce que j'ai réalisé... (bien que le post original soit ancien.

    Merci à son auteur en tout cas.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    import java.awt.BorderLayout;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTree;
    import javax.swing.event.TreeModelListener;
    import javax.swing.tree.TreeModel;
    import javax.swing.tree.TreePath;
     
    public class Test implements TreeModel {
     
    	private class Donnees {
    		protected String[] tab = null;
     
    		@Override
    		public String toString() {
    			return "Commentaires";
    		}
    	};
     
    	private final Donnees donnees = new Donnees();
     
    	public Test(String[] tabls) {
    		donnees.tab = tabls;
     
    	}
     
    	@Override
    	public Object getRoot() {
    		return donnees;
    	}
     
    	@Override
    	public Object getChild(Object parent, int index) {
    		if (parent == donnees)
    			return donnees.tab[index];
    		return null;
    	}
     
    	@Override
    	public int getChildCount(Object parent) {
    		if (parent == donnees)
    			return donnees.tab.length;
    		return 0;
    	}
     
    	@Override
    	public boolean isLeaf(Object node) {
    		if (node == donnees)
    			return false;
    		else
    			return true;
    	}
     
    	@Override
    	public void valueForPathChanged(TreePath path, Object newValue) {
    		// rien
    	}
     
    	@Override
    	public int getIndexOfChild(Object parent, Object child) {
    		if (parent == donnees) {
    			return 0;
    		} else {
    			int index = 0;
    			for (int i = 0; i < donnees.tab.length; i++) {
    				if (donnees.tab[i].equals(child)) {
    					index = i;
    					break;
    				}
    			}
    			return index;
    		}
    	}
     
    	@Override
    	public void addTreeModelListener(TreeModelListener l) {
    		// rien
    	}
     
    	@Override
    	public void removeTreeModelListener(TreeModelListener l) {
    		// rien
    	}
     
    	public static void main(String[] args) {
    		JFrame f = new JFrame("");
    		f.setSize(500, 500);
    		f.setLocationRelativeTo(null);
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JTree t = new JTree();
    		String[] s = { "Hello", "Bonjour", "Au revoir" };
    		t.setModel(new Test(s));
    		t.setOpaque(true);
     
    		JPanel p = new JPanel(new BorderLayout());
    		p.add(t);
    		f.getContentPane().add(p);
    		f.setVisible(true);
    	}
    }

Discussions similaires

  1. prob avec tableau croisé dynamique
    Par zorian dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2005, 12h56
  2. problème avec tableau
    Par Kerod dans le forum C
    Réponses: 7
    Dernier message: 13/12/2005, 13h27
  3. Requete sur table avec Tableau
    Par Sichagadel dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/11/2005, 14h05
  4. [JComboBox] Remplissage avec tableau de String
    Par linkit dans le forum Composants
    Réponses: 2
    Dernier message: 26/05/2005, 21h39
  5. Réponses: 11
    Dernier message: 29/04/2005, 19h45

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