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] Font spécifique


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut [JTree] Font spécifique
    bonjour a tous.
    voila j'ai un jtree et j'aimerais que certains de mas elements n'ai pas la meme font que d'autre. donc sans le cell renderer dans certains cas je fais setFont(....) . ce que je ne comprend pas c'est que ca le fait pour tout les element de mon arbre et pas que pour ceux que je veux. La font est elle generale a tout l'arbre ?
    je vous met un bout 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
     
    public Component getTreeCellRendererComponent(JTree tree,
    												  Object value,
    												  boolean selected,
    												  boolean expanded,
    												  boolean leaf,
    												  int row,
    												  boolean hasFocus) {
     
    	    super.getTreeCellRendererComponent(tree,
    	                                       value,
    	                                       selected,
    	                                       expanded,
    	                                       leaf,
    	                                       row,
    	                                       hasFocus);
    	    JLabel label = (JLabel)
    		super.getTreeCellRendererComponent(tree,
    										   value,
    										   selected,
    										   expanded,
    										   leaf,
    										   row,
    										   hasFocus);
     
    		ItemSelectionNode node = (ItemSelectionNode) value;
    		Action action = node.getAction();
    		if (action != null && action.isEnabled()) {
    		    if (node.isHightlighted()) {
    		        label.setForeground(HIGHLIGHTED_COLOR);
    		    }
    		} else if (node.getChildCount()==0) {
    		    label.setForeground(Color.LIGHT_GRAY);
    		} else  {
    		    DefaultMutableTreeNode parent = (DefaultMutableTreeNode)node.getParent();
    		    if (parent != null && parent.isRoot()) {
    		        label.setForeground(new Color(5,121,175));
    		        label.setFont(new Font("my font",Font.PLAIN,13));
    		    }
    		}
    		label.setIcon(ImagePool.getIcon(node.getIconIndex()));
     
    		return label;
    	}
    merci a ceux qui pouront m'aider... et meme aux autres ^^

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Il faut se rappeler que c'est la même instance du renderer qui sera utilisée pour peindre chacun des noeuds de l'arbre. Donc tu dois customiser le renderer dans tous les cas de figure, et pas seulement pour les noeuds sur lesquels tu veux une font spécifique.
    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
     
      Font defaultFont = new Font(...);
      Font customFont = new Font("my font",Font.PLAIN,13);
     
          ...
          label.setFont(defaultFont);
          ItemSelectionNode node = (ItemSelectionNode) value; 
          Action action = node.getAction(); 
          if (action != null && action.isEnabled()) { 
          ...
              if (parent != null && parent.isRoot()) { 
                  label.setForeground(new Color(5,121,175)); 
                  label.setFont(customFont); 
              } 
          }

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Non c'est le Renderer est général à tout l'arbre. Ainsi dès le 1er setFont(maFont) le renderer gardera cette font-ci jusqu'à ce que tu la changes manuellement sur un autre noeud. Meme chose pour les tooltip, la couleur de fond, la couleur de texte, l'icone, ...

    Il te faut donc manuellement sauvegarder la font par defaut (lors de la création du renderer par exemple) et re-faire un setFon(fontParDefault) pour chacun des éléments devant avoir cette font par défaut.

    EDIT - zut coiffé sur le poteau...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut
    merci ca resould mon probleme ^^

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

Discussions similaires

  1. JTree : modifier le font du label du node parent
    Par drick35 dans le forum Composants
    Réponses: 1
    Dernier message: 31/01/2015, 05h02
  2. [SWING][FONT] choisir la police par défaut
    Par narmataru dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 21/02/2003, 10h35
  3. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41
  4. comment changer d'attribut de fonte dans un Tlabel?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/08/2002, 16h53
  5. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46

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