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 :

Probleme lors d'un rafraichissement d'un JTree


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut Probleme lors d'un rafraichissement d'un JTree
    Bonjour, j'ai un jtree créé à partir d'arraylist. Je voudrais mettre à jour mon jTree lorsque mon arraylist est modifié. Voici le constructeur de mon jtree:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CheckNode root = new CheckNode("root");
    	DefaultTreeModel model = new DefaultTreeModel( root );
    	JTree tree = new JTree(model);
    Lorsque je modifie l'arraylist je fais appel à une méthode réalisant ceci:
    Mais il ne se passe rien sur mon Jtree.

    Faut il que j'utilise un TreeModelListener vu que je ne modifie pas directement mon arbre?

    Pouvez vous m'aider svp? merci d'avance

  2. #2
    Membre expérimenté Avatar de uhrand
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 203
    Par défaut
    Montre-nous un SSCCE de manière à ce que nous puissions le faire tourner chez nous, pour comprendre ce qui ne va pas.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Je ne sais pas comment faire le SSCCE. Désolé Mais voici une partie de mon code:

    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
    public class MyJTree implements TreeModelListener{
     
    	CheckNode root = new CheckNode("root");
    	DefaultTreeModel model = new DefaultTreeModel( root );
    	JTree tree = new JTree(model);
     
    	Parsing Parse = new Parsing();
     
    	public JTree BuildTree(){
    		tree.setLayout(new BorderLayout());
    		return tree;
    	}
     
    	public JTree BuildPGN(){
     
    //		pgns= Parse.CreationPGN(ifilename);		
    		for(int i=0;i<Parsing.pgns_recuperes.size();i++){
    			CheckNode noeud =new CheckNode(Parsing.pgns_recuperes.get(i).getName());
    			root.add(noeud);
    			ArrayList<SPN> spns = Parsing.pgns_recuperes.get(i).getSpns();
    			for(int j=0;j<spns.size();j++){
    				CheckNode noeudfils = new CheckNode(spns.get(j).getName());
    				noeud.add(noeudfils);
    				CheckNode noeudfilsfils1 = new CheckNode("Start bit :"+spns.get(j).getStart_bit());
    				CheckNode noeudfilsfils2 = new CheckNode("Length :"+spns.get(j).getLength());
    				noeudfils.add(noeudfilsfils1);
    				noeudfils.add(noeudfilsfils2);
    			}			
    		}
    		tree.setCellRenderer(new CheckRenderer());	
    		tree.getSelectionModel().setSelectionMode(
    				TreeSelectionModel.SINGLE_TREE_SELECTION
    		);
    		tree.addMouseListener(new NodeSelectionListener(tree));
    		tree.expandRow(0);
    		return tree;
    	}
    	public void treeStructureChanged(TreeModelEvent ev){
    		model.reload(root);
    		model.nodeStructureChanged( root );
    		model.setRoot( root );
    	}
    	public void treeNodesChanged(TreeModelEvent ev){
    		model.reload(root);
    		model.nodeStructureChanged( root );
    		model.setRoot( root );
    	}
    	public void treeNodesRemoved(TreeModelEvent ev){
    	}
    	public void treeNodesInserted(TreeModelEvent ev){
    	}
    }
     
     
    class NodeSelectionListener extends MouseAdapter {
    	JTree tree;
     
    	NodeSelectionListener(JTree tree) {
    		this.tree = tree;
    	}
     
    	public void mouseClicked(MouseEvent e) {
    		int x = e.getX();
    		int y = e.getY();
    		int row = tree.getRowForLocation(x, y);
    		TreePath  path = tree.getPathForRow(row);
    //		TreePath  path = tree.getSelectionPath();
    		if (path != null) {
    			CheckNode node = (CheckNode)path.getLastPathComponent();
    			boolean isSelected = ! (node.isSelected());
    			node.setSelected(isSelected);
    			if ( isSelected ) {
    				tree.expandPath(path);
    			} else {
    //				tree.collapsePath(path);
    			}
    			((DefaultTreeModel)tree.getModel()).nodeChanged(node);
     
    			if (row == 0) {
    				tree.revalidate();
    				tree.repaint();
    			}
    		}
    		tree.repaint();
    		tree.validate();
    	}
    }
    checknode est un defaultMutableTreeNode avec checkbox.

  4. #4
    Membre expérimenté Avatar de uhrand
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 203
    Par défaut
    Il faut modifier le modèle. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<PGN> pgns_recuperes = Parsing.pgns_recuperes;
    PGN pgn = new PGN();
    pgn.setName("my pgn " + count);
    count++;
    pgns_recuperes.add(pgn);//ArrayList
    CheckNode noeud = new CheckNode(pgn.getName());
    DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
    DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
    model.insertNodeInto(noeud, root, 0);//Modèle

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Merci de tes réponses.

    Mais je dois faire ceci pour tous mes noeuds?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Voila ce que j'ai fais:
    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
    ArrayList<PGN> pgns_recuperes= Parse.pgns_recuperes;
     
    	public JTree BuildPGN(){
     
    		for(int i=0;i<pgns_recuperes.size();i++){
    			CheckNode noeud =new CheckNode(pgns_recuperes.get(i).getName());
    			model = (DefaultTreeModel) tree.getModel();
    			DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
    			model.insertNodeInto(noeud, root, i);//Modèle
    //			root.add(noeud);
    			ArrayList<SPN> spns = pgns_recuperes.get(i).getSpns();
    			for(int j=0;j<spns.size();j++){
    				CheckNode noeudfils = new CheckNode(spns.get(j).getName());
    				model = (DefaultTreeModel) tree.getModel();
    				root = (DefaultMutableTreeNode) model.getRoot();
    				model.insertNodeInto(noeudfils, noeud, j);//Modèle
    Puis ensuite je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public void refreshJTree(){
    		model.reload(root);
     
    	}
    Donc des que je modifie l'arraylist, je fais appel à cette méthode. Mais il ne se passe toujours rien.

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

Discussions similaires

  1. probleme lors du rafraichissement d'un JTabbedPane
    Par blaise_laporte dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 26/02/2007, 15h07
  2. Réponses: 13
    Dernier message: 10/05/2004, 16h49
  3. [MYSQL] Probleme lors de la compilation
    Par Nasky dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 24/02/2004, 17h04
  4. probleme lors du passage de paramètre
    Par maxmj dans le forum ASP
    Réponses: 4
    Dernier message: 18/11/2003, 00h15
  5. problem lors de l'ecriture d'un fichier
    Par gemai dans le forum C
    Réponses: 20
    Dernier message: 29/08/2003, 15h01

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