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

 Java Discussion :

Contruction d'un Jtree avec une liste


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut Contruction d'un Jtree avec une liste
    Bonjour, je souhaite créer un premier niveau d'arborescence dans un JTree avec une Liste String[].

    Le problème vient de la sélection de l'élément de la liste pour la création du noeud :

    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
    public class Fenetre extends JFrame {
     
    	private JTree arbre;
    	String niveau1[] = {"Couche 1", "Couche 2 ","Couche 3"};
     
    	public Fenetre(){
    		this.setSize(300, 300);
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setTitle("Les arbres");
    		buildTree();
     
    		this.setVisible(true);
    	}
     
    	private void buildTree(){
    		//Création d'une racine
    		DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Racine");
     
    		//Nous allons ajouter des branches et des feuilles à notre racine
    		for(int i = 1; i < 4; i++){
    			DefaultMutableTreeNode rep = new DefaultMutableTreeNode(niveau1[i]);                             // ICI erreur 
     
    				rep.add(rep2);
    			}
    		arbre = new JTree(racine);
     
    		//Que nous plaçons sur le ContentPane de notre JFrame à l'aide d'un scroll 
    		this.getContentPane().add(new JScrollPane(arbre));
    	}
     
    	public static void main(String[] args){
    		Fenetre fen = new Fenetre();
    	}
     
    }
    D'où vient cette erreur ?
    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Trouvé : le problème vient du for qui commence à 1 et non à 0 ... Ah la la.
    Bonne journée.

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah ouais, à aucun comment tu ne crées rep2, donc forcément ça ne compile pas.

    De plus tu n'ajoutes absolument rien à la racine, ce qui est plutôt étrange tu en conviendras.

    Ne cherchais tu pas à faire plutôt ceci: au lieu de ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    En effet, ce n'est pas totalement mon code mais celui d'un tuto que j'essaie d'adapter à mes besoins, voici ma version :

    j'ai déclaré 3 tableau de string : niveau10[], niveau11[] et niveau12[]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	private void buildTree(){
    		DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Racine");
    		for(int i = 0; i < 3; i++){
    			DefaultMutableTreeNode rep = new DefaultMutableTreeNode(niveau1[i]);
    			System.out.println("la longueur de "+ "niveau1"+i +" est de "+ ("niveau1"+i).length());
     
     
    		}
    		arbre = new JTree(racine);
    		this.getContentPane().add(new JScrollPane(arbre));
    	}
    Je ne comprend pas pourquoi j'ai toujours la même longueur de tableau :

    la longueur de niveau10 est de 8
    la longueur de niveau11 est de 8
    la longueur de niveau12 est de 8

    Alors que seul niveau 10 à une longueur de 8.
    Quelqu'un peut-il m'aider ?
    Merci d'avance.

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il n'est pas possible d'utiliser des noms de variable dynamiques en java. En effet java est un langage statique (tout comme C/C++/C# et autres) dans lesquels la définition dynamique de nom de variables n'est pas possible par essence.

    Donc quand tu fais Celà revient à, si i vaut 1 par exemple

    Or java considère "niveau11" comme une chaine (normal c'est entre guillemets.

    donc aura pour longueur celle de la chaine niveau11, c'est à dire 8.

    Si tu veux pouvoir parcourir tes tableaux à l'affilée, il va falloir les stocker dans une structure spécifique, une Collection (ou un tableau mais les tableaux c'est nul ^^ ), c'est à dire une Liste quelconque (entendre par là une ArrayList qui est le choix par défaut).

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Comment je fait dans ce cas pour accéder aux données des tableaux nommés tab1,tab2, tab3 ... dans un for par exemple ?
    Est-il nécessaire de changer de structures ?

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par sinok Voir le message
    Si tu veux pouvoir parcourir tes tableaux à l'affilée, il va falloir les stocker dans une structure spécifique, une Collection (ou un tableau mais les tableaux c'est nul ^^ ), c'est à dire une Liste quelconque (entendre par là une ArrayList qui est le choix par défaut).

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Bon, ok, je suis obligé
    Sinon, juste un petit question :
    Une fois mon arbre affiché dans un JPanel, lorsque je le déroule, ma fenêtre s'agrandie pour afficher l'arbre en entier jusqu'à un certain point où il disparait de ma fenêtre. Il suffit d'agrandir manuellement la fenêtre pour le voir apparaitre.
    Est-ce normal ? Comment faire pour qu'il continu d'agrandir lui même la fenêtre ?

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

Discussions similaires

  1. liaison zone de texte avec une liste
    Par FlIpMaN dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/02/2006, 23h39
  2. [MySQL] Problème avec une liste déroulante
    Par leloup84 dans le forum SQL Procédural
    Réponses: 19
    Dernier message: 24/01/2006, 12h57
  3. Réponses: 7
    Dernier message: 24/01/2006, 11h03
  4. alligner des textbox (input) avec une liste
    Par sundjata dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 20/01/2006, 15h16
  5. Remplir 3 champs textes différents avec une liste déroulante
    Par azorol dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2005, 00h04

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