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 :

Changer couleur d'un Leaf de JTree


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Par défaut Changer couleur d'un Leaf de JTree
    heuu sa me soul ce JTree
    svp y'a une méthode qui change le couleur du texte d'un Leaf sans passer par TreeCellRenderer ? comme dans les JTabbedPane (TabbedPane.setFourGroundAt(index,Color)
    par ce que dans mon application j'ai un jtextpane et quand je detecete une modification dedans je veut changer la feuille dans jtree qui représente ce textpane

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 8
    Par défaut
    Pour le renderer :

    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
     
    public class MonRenderer extends DefaultTreeCellRenderer {
     
    	private JLabel label;
     
    	@Override
    	public Component getTreeCellRendererComponent(final JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row,
    			boolean hasFocus) {
     
    		super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
    //si c'est une feuille
    		if (leaf) {
    			label = new JLabel(value.toString()) 
    			label.setFont(new Font("Arial", Font.PLAIN, 12)); //police et couleur de la feuille
    			//label.setIcon(chemin); // pour mettre un icone personnalisé
    			label.setForeground(Color.RED);//couleur de police
    			}
     
    			return label;
    		} else {
    			setToolTipText(null); // no tool tip
    		}
     
    		return this;
    	}
    }
    pour l'ajout à l'arbre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    JTree arbre = newJTree();
    MonRenderer renderer = new Renderer();
    arbre.setCellRenderer(renderer);
    Voila en espérant que ca aide quelqu'un...

  3. #3
    Membre averti Avatar de ngmsky
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 39
    Par défaut Tout va bien sauf que les noeud selectionnés ne sont plus en surbrillance
    Bonjour,
    Merci pour toutes vos contributions car grace à vous je peux maintenant personnaliser la coleur de texte des noeuds selon que c'est une feuille ou un dossier.

    Le seule probleme c'est qu'en cliquant sur un noeud (feuille ou dossier) il ne se met pas en surbrillance. En faite, l'utilisateur à l'impression que malgré ses clics (sur le noeuds) l'arbre ne les détecte pas.

    Mais en réalité la sélection est bien pris en compte car en ajoutant un fils sous le neoud sélectionne, ça marche. Le seule problème c'est juste qu'en a pas l'aspect visuel de la sélection (noeud avec fond bleu).

    Pour plus d'infos :

    J'ai juste un petit programme de teste : un Jtree avec un bouton pour ajouter les noeuds.
    Et j'ai utilisé la solution de "le_bricoleur" (poste #5)

    Je rappel qu'il suffit que j'enleve cette partie (le Treecellerenderer) pour que mes noeuds aient un fond bleu lorsqu'ils sont selectionés (cliqué).



    Merci pour vos suggestions.
    Je reste disponible pour d'autres précisions si besoins.

  4. #4
    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 il faut que tu prévoie la surbrillance dans ton renderer.

    Le troisième paramètre getTreeCellRendererComponent t'indique si le noeud est sélectionné ou pas, à toi d'agir en fonction.

  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
    Non, il n'y a pas d'autre méthode que le TreeCellRenderer, ces derniers ayant justement pour rôle de dessiner les noeuds.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Par défaut
    Citation Envoyé par sinok Voir le message
    Non, il n'y a pas d'autre méthode que le TreeCellRenderer, ces derniers ayant justement pour rôle de dessiner les noeuds.
    ce que j'ai pensé a faire c'est stocké les label dans une HashMap( puisque class qui implements TreeCellRenderer extends de JLabel) apres je change le couleur de JLabel c'est une bonne idée ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Par défaut
    Je ne pense pas que ça fonctionnera...


    Mais si ce que tu veux faire est changer la couleur de toutes les feuilles de l'arbre (donc toutes les feuilles de la même couleur), alors c'est super simple. Cherche dans cette partie du forum, il y a plusieurs exemples de redéfinition du TreeCellRenderer, t'as juste à faire un copier/coller. Ensuite en deux instructions, c'est fait

Discussions similaires

  1. [VB.net] Changer couleur ligne DataGrid
    Par bguihal dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/07/2016, 06h54
  2. Changer couleur d'un Leaf de JTree
    Par black_night dans le forum Composants
    Réponses: 2
    Dernier message: 28/07/2011, 10h19
  3. changer couleur du lien au passage de la sourie
    Par toome dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/08/2005, 10h11
  4. [FLASH MX2004] Changer couleur de la ProgressBar ????
    Par Geilgestorm dans le forum Flash
    Réponses: 2
    Dernier message: 25/10/2004, 17h57
  5. changer couleur d'une "case" selon clique
    Par Jéjé2reims dans le forum MFC
    Réponses: 4
    Dernier message: 05/02/2004, 12h19

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