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] Feuille avec CheckBox


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 15
    Points : 17
    Points
    17
    Par défaut [JTree] Feuille avec CheckBox
    bonjour,

    Suite a diverse recherche sur le net j'ai vue qu'il etait possible d'ajouter un checkbox pour les feuilles d'un JTree.

    Maleheureusement ces sources sont toutes peu lisible ... avec presque pas voir pas du tout de commentaire ...

    Donc voila j'aimerais savoir si quelqu'un l'a deja fait ? ou si quelqu'un sais ou je pourrais trouver une documentation correcte pour que je puisse le faire !

    (a quand un gros tutorial sur JTree sur developpez.com avec les treecellrenderer etc ... )

  2. #2
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Celui qui répondra à ta question, redtux, m'aidera aussi par la même occasion, car j'avais pensé à un truc pareil aussi dans mon projet, mais j'ai abandonné faute de manque de compréhension encore de l'ABC, à mon stade de découverte du JTree...

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Yatta !

    J'ai reussi...

    j'ai plus qu'as arranger un peux pour checker etc ...

    je vous met lexemple que j'ai trouvé ....
    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
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    import java.util.*;
     
    public class treeavecCB {
    	public static void main(String[] arg){
    		JFrame arboCheck = new FenetreTree();
    		arboCheck.setVisible(true);
    	}
    }
     
    class FenetreTree extends JFrame{
    	FenetreTree(){
    		super("test");
    		setSize(800, 600);
    		JTree arbo;
    		DefaultMutableTreeNode noeudParent;
    		noeudParent = new DefaultMutableTreeNode(new String("truc"));
    		DefaultMutableTreeNode noeudEnfant;
    		//DefaultTreeCellRenderer dtcr = new DefaultTreeCellRenderer();
    		RenduComposant rc = new RenduComposant();
    		EditComposant ec = new EditComposant();
    		JCheckBox jcb = new JCheckBox();
    		String[] tableau = {"bou", "ahh", "gna", "niark"};      
    		JScrollPane jsp = new JScrollPane();
    		for(int i = 0; i < tableau.length; i++){
    			jcb = new JCheckBox(tableau[i]);
    			noeudEnfant = new DefaultMutableTreeNode(jcb, true);
    			noeudParent.add(noeudEnfant);
    		}
    		arbo = new JTree(noeudParent);
    		arbo.setCellRenderer(rc);
    		arbo.setCellEditor(ec);
    		arbo.setEditable(true);
    		getContentPane().add(arbo);
    	}
    }
     
    class RenduComposant implements TreeCellRenderer{
    	public Component getTreeCellRendererComponent(JTree tree, Object obj, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){
    		DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode)obj;
    		if(dmtcr.getUserObject() instanceof JCheckBox){
    			JCheckBox toto = (JCheckBox)dmtcr.getUserObject();
    			return toto;
    		} else {
    			JLabel toto = new JLabel((String)dmtcr.getUserObject());
    			return toto;
    		}
    	}
    }
     
    class EditComposant implements TreeCellEditor{
    	public void addCellEditorListener(CellEditorListener l){
    	}
    	public void cancelCellEditing() {
    	}
    	public Object getCellEditorValue(){
    		return this;
    	}
    	public boolean isCellEditable(EventObject evt){
    		if(evt instanceof MouseEvent){
    			MouseEvent mevt = (MouseEvent) evt;
    			if (mevt.getClickCount() == 1){
    				return true;
    			}
    		}
    		return false;
    	}
    	public void removeCellEditorListener(CellEditorListener l){
    	}
    	public boolean shouldSelectCell(EventObject anEvent){
    		return true;
    	}
    	public boolean stopCellEditing(){
    		return false;
    	}
    	public Component getTreeCellEditorComponent(JTree tree, Object obj, boolean isSelected, boolean expanded, boolean leaf, int row){
    		DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)obj;
    		JCheckBox tata=(JCheckBox)dmtn.getUserObject();
    		tata.setEnabled(true);
    		return tata;
    	}
    }

  4. #4
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Merci redtux, c'est un exemple que je vais étudier...

    Mais j'ai deux petites questions : normal la couleur grise sur le fond blanc ? (je pense que dans un projet réel, on doit pouvoir changer la couleur du JCheckBox)

    A certains moment, j'ai des erreurs qui sont affichés sur la console : des ClassCastException... Normal ?
    (C'est quand on sélectionne la racine "truc" je pense : cette racine n'est pas un JCheckBox, et cela déclenche l'erreur...)

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    La couleur c'est juste parce que j'etais sous Solaris pour prog donc ca m'arrangeai et c'est plus cours a ecrire que pour le lookandfeel par defaut ....

    Ensuite en effet la racine n'etant pas un checkbox j'ai oublier de configurer le cas ou ce n'etait pas un checkbox dans le celleditor ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Component getTreeCellEditorComponent(JTree tree, Object obj, boolean isSelected, boolean expanded, boolean leaf, int row){ 
          DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)obj; 
          JCheckBox tata=(JCheckBox)dmtn.getUserObject(); 
          tata.setEnabled(true); 
          return tata; 
       }
    a changer en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public Component getTreeCellEditorComponent(JTree tree, Object obj, boolean isSelected, boolean expanded, boolean leaf, int row){ 
          DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)obj; 
          if ( dmtn.getUserObject() instanceof JCheckBox ) {
           JCheckBox tata=(JCheckBox)dmtn.getUserObject(); 
           tata.setEnabled(true); 
           return tata; 
          }
          return dmtn.getUserObject(); 
       }
    enfin je pense j'ai pas tester la ...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/04/2010, 17h10
  2. Jtree avec checkbox et "+"
    Par tupac25 dans le forum Composants
    Réponses: 2
    Dernier message: 20/04/2010, 13h33
  3. Jtree avec checkboxes..Solutions?
    Par MASSAKA dans le forum Composants
    Réponses: 1
    Dernier message: 09/02/2008, 12h12
  4. [VBA-E] Parcourir les checkbox d'une feuille avec une boucle
    Par tonton fred dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/05/2007, 13h47

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