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] Personnaliser icones


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut [JTree] Personnaliser icones
    bonjour à tous,
    je m explique :
    j'ai un JTree j'ai déjà personnalisé les icones pour les dossiers fermés/ouvert ainsi que pour les feuilles.
    Maintenant j'aimerais ajouter à tous mes noeuds un icone en plus pour savoir si le champ à été rempli ou pas. Pour l instant les non remplis sont en rouge et les autre en vert.

    Je poste également le code de mon renderer pour voir où modifier :

    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
     
    class MyTreeRenderer extends DefaultTreeCellRenderer {
     
    	private static final long serialVersionUID = 1L;
     
    	public MyTreeRenderer(){
    		super();
    	}
     
    	public Component getTreeCellRendererComponent(
    			JTree tree,
    			Object value,
    			boolean sel,
    			boolean expanded,
    			boolean leaf,
    			int row,
    			boolean hasFocus) {
     
    		super.getTreeCellRendererComponent(
    				tree, value, sel,
    				expanded, leaf, row,
    				hasFocus);
     
    		DefaultMutableTreeNode node =
    			(DefaultMutableTreeNode)value;
     
    		if( !node.isRoot()){
    			if (isFilled(value)) {
    				setForeground(new Color(51,153,0)); // REMPLI
    			} 
    			else {
    				setForeground(Color.RED); // NON REMPLI
    			} 
    		}
    		else{
    			setForeground(Color.BLACK);
    		}
     
    		return this;
    	}
     
    	// renvoi vrai si le noeud courant est rempli, faux sinon
    	protected boolean isFilled(Object value) {
    		MyCustomNode node =
    			(MyCustomNode)value;
    		MyTreeObject selObject = (MyTreeObject) (node.getUserObject());
    		if ( !("".equals(selObject.getValeur().trim())) ) {
    			return true;
    		}
    		return false;
    	}
     
    }
    voir les images jointes pour les résultats courant et attendus.

    merci d avance
    Images attachées Images attachées   

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il te suffit de faire un setIcon() pour ajouter une icone à ton renderer...
    Il faudra peut-être passé par les méthodes setVerticalTextPosition() et setHorizontalTextPosition(int) pour position l'icone sur la gauche (mais je pense que ce doit être la position par défaut)

    a++

  3. #3
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    oui j'avais essayé ça mais ça ne donne pas le résultat voulu...
    l'icone remplace celle du dossier ou de la feuille, moi je veux garder cette icone et en ajouter une à coté (v. pièces jointes)

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour jojodu31, je sais pas si on peut avoir 2 icônes pour un seul élément.

    Par contre une solution serait que tu fusionnes directement les images, cela t'en ferait 4 différentes, et en fonction de l'état de la feuille tu affiches la bonne.

  5. #5
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    oui c'est la solution à laquelle je pensais , ça va me faire 6 possibilités donc ( feuille, dossier OUvert, dossier Fermé et à chaque fois REMPLI/ NON REMPLI)..
    je pensais qu'il y avait une autre solution par exemple retourner un JLabel avec mon renderer ou qq chose comme ça ... mais apparement non
    je vais donc faire comme cela pour l instant si quelqu'un à une idée miraculeuse je prend

  6. #6
    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
    faire ta propre implémentation de TreeCellRenderer au lieu d'utiliser la version par défaut.

    Comme cela tu pourras mettre sans problème deux icônes sur une même feuille.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/06/2014, 09h39
  2. Réponses: 2
    Dernier message: 06/05/2007, 18h15
  3. [Jtree] Personnaliser l'icone d'un noeud
    Par dr23fr dans le forum Composants
    Réponses: 2
    Dernier message: 17/05/2006, 17h17
  4. Jtree : personnaliser chaque noeud
    Par fas dans le forum Composants
    Réponses: 6
    Dernier message: 23/01/2006, 15h45
  5. [JTree] TreeNode avec icon
    Par Breiz-ilien dans le forum Composants
    Réponses: 3
    Dernier message: 05/04/2005, 16h26

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