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 :

Ajout / Suppression noeud JTree avec implémentation de TreeModel


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Ajout / Suppression noeud JTree avec implémentation de TreeModel
    Voici la classe qui implémenté 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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    package GestionDeMail;
     
    import java.util.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
     
    public class DossierTreeModel implements TreeModel {
     
    	private List<Dossier> dossierList = new ArrayList<Dossier>();
    	public final String ROOT = "Racine";
    	private EventListenerList listenerList = new EventListenerList();
     
    	public DossierTreeModel(List<Dossier> liste) {
    		dossierList.add(new Dossier(ROOT, -1, -2));
    		dossierList.addAll(liste);
    	}
     
    	public List<Dossier> getDossierList() {
    		return this.dossierList;
    	}
     
    	public void addTreeModelListener(TreeModelListener arg0) {
    		listenerList.add(TreeModelListener.class, arg0);
    	}
     
    	public void removeTreeModelListener(TreeModelListener arg0) {
    		listenerList.remove(TreeModelListener.class, arg0);
    	}
     
    	public Object getChild(Object arg0, int arg1) {
    		Dossier d = (Dossier) arg0;
    		Dossier tab[] = new Dossier[this.getChildCount(d)];
    		int j = 0;
    		for (int i = 0; i < this.dossierList.size(); i++) {
    			if (this.dossierList.get(i).getIdPere() == d.getId()) {
    				tab[j] = this.dossierList.get(i);
    				j++;
    			}
    		}
    		for (int k = 0; k < tab.length; k++) {
    			if (k == arg1) {
    				return tab[k];
    			}
    		}
    		return null;
    	}
     
    	public int getChildCount(Object arg0) {
    		int nbChilds = 0;
    		for (int i = 0; i < this.dossierList.size(); i++) {
    			Dossier d = (Dossier) arg0;
    			if (d.getId() == this.dossierList.get(i).getIdPere()) {
    				nbChilds++;
    			}
    		}
    		return nbChilds;
    	}
     
    	public int getIndexOfChild(Object arg0, Object arg1) {
    		Dossier parent = (Dossier) arg0;
    		Dossier child = (Dossier) arg1;
     
    		for (int i = 0; i < getChildCount(parent); i++) {
    			if (getChild(parent, i).equals(child))
    				return i;
    		}
    		return -1;
    	}
     
    	public Object getRoot() {
    		return this.getDossierList().get(0);
    	}
     
    	public boolean isLeaf(Object arg0) {
    		boolean result = false;
    		if (this.getChildCount(arg0) == 0) {
    			result = true;
    		}
    		return result;
    	}
     
    	public void ajouterDossier(Dossier d) {
    		this.dossierList.add(d);
    	}
     
    	public void removeDossier(int id) {
    		for (int i = 0; i < this.dossierList.size(); i++) {
    			if (this.dossierList.get(i).getId() == id) {
    				this.dossierList.remove(i);
    			}
    		}
    	}
     
    	public void valueForPathChanged(TreePath path, Object newValue) {
    	}
    }
    Dans une applet, je crée un Jtree avec pour Model la classe précédente, mais je n'arrive pas à supprimer ou ajouter un noeud. Si quelqu'un pouvait m'aider...

    La suppression se fait après un clic sur un bouton mais le problème n'est pas la mais plutôt dans la modification du model de mon JTree

  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
    Quel est le problème ? La méthode "removeDossier" ne fonctionne pas ?
    J'imagine que c'est du code que tu a repris, il n'est pas de toi ? Dans ce cas, quelles sont les parties de code que tu ne comprends pas ?
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Tout d'abord merci d'avoir répondu à mon problème.

    Si tout le code est de moi je n'ai rien repris mon seul problème et que lorsque je veux supprimer un dossier cela ne marche pas au niveau visuel.

    J'ai regardé comment faire sur des exemples le problème c'est qu'il fonctionne tous avec un DefaultTreeModel et des DefaultMutableTreeNode et dans mon cas un Noeud est un dossier donc c'est pas toujours évident.

    J'aimerais savoir ce qu'il faut faire pour supprimer un Noeud dans mon model étant donné que ma méthode removeDossier ne fonctionne pas.


    De plus pour supprimer un dossier j'ai un problème lorsqu'il a des fils puisqu'il faut faire une méthode removeDossier par récurrence

    ex :

    Si le dossier est une feuille je supprime

    Sinon je lance la méthode removeDossier sur le dossier que je souhaite

    ...

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

Discussions similaires

  1. [SimpleXML] Ajouter un noeud avec addchild en premier
    Par Nillak dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 11/05/2008, 00h09
  2. Réponses: 9
    Dernier message: 05/12/2007, 13h14
  3. [XML] ajout/suppression d'un node avec xml::xyz
    Par LFC dans le forum Modules
    Réponses: 2
    Dernier message: 11/07/2007, 20h25
  4. Réponses: 1
    Dernier message: 28/02/2007, 09h16
  5. JTree : problème d'affichage ajout/suppression noeud
    Par rnan dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2006, 08h12

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