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 :

[Swing / JTree] Changer le background d'un TreeNode


Sujet :

Composants Java

  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut [Swing / JTree] Changer le background d'un TreeNode
    Bonjour a tous,

    Je voudrais pouvoir changé le background d'un treenode, en faisant un click droit sur le noeud, cela ouvre une boite JColorChooser, et lorsque je clique sur une couleur cela change le background de mon noeud. Comment faire pour changer la couleur une fois le noeud créé?

    Merci pour votre aide.

  2. #2
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    J'ai essayé avec ce code mais cela ne fonctionne pas :
    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
     
    public class AssignColorAction extends AbstractAction {
     
    	JTree tree;
    	private JColorChooser chooser;
    	private JDialog dialog;
     
    	public AssignColorAction()
    	{
    		this.putValue(Action.NAME, "Assigner une couleur");
    		this.tree = null;
    	}
     
    	public void actionPerformed(ActionEvent arg0) {
    		// TODO Auto-generated method stub
    		this.tree = Explorer.getTree();
     
     
    		final MyTreeNode selectedNode =
    			(MyTreeNode)
    			tree.getLastSelectedPathComponent();
     
    		if(selectedNode == null) return;
    		else
    		{
    			final Color selectedColor = JColorChooser.showDialog(FenetrePrincipale.getInstance(),
    					"Choissisez une couleur", Color.white);
    			if(selectedColor != null) {
     
    				tree.setCellRenderer(
    						new MyTreeRenderer()
    						{
    							@Override
    							public Component getTreeCellRendererComponent(JTree tree, Object value,
    									boolean isSelected, boolean isExpanded,
    									boolean leaf, int row, boolean hasFocus) {
    								// TODO Auto-generated method stub
    								super.getTreeCellRendererComponent(tree, value,
    										isSelected, isExpanded,
    										leaf, row, hasFocus);
     
    								if(((MyTreeNode)value) == selectedNode)
    								{
    									setBackground(selectedColor);
    								}
    								return this;
    							}
    						});
    			}
     
    		}
     
    	}
     
    }

  3. #3
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    Je te conseillerais plutot de mettre un attribut définissant la couleur dans la classe MyTreeNode, et d'utiliser un seul TreeCellRenderer qui en tient compte. Pour changer le background, un simple appel au setter et c'est bon.
    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
    public class MyTreeNode ... {
     
      private Color background;
     
      public Color getBackground() {  return background;  }
     
      public void setBackground(Color background) {  this.background = background;  }
     
      ...
     
    }
     
    public class MyTreeRenderer {
      public Component getTreeCellRendererComponent(JTree tree, Object value,
          boolean isSelected, boolean isExpanded,
          boolean leaf, int row, boolean hasFocus) {
     
        super.getTreeCellRendererComponent(tree, value,
          isSelected, isExpanded,
          leaf, row, hasFocus);
     
        if(value instanceof MyTreeNode) {
          setBackground(((MyTreeNode)value).getBackground());
        }
        return this;
      }
    }
     
    public class AssignColorAction ... {
     
     ...
     
      public void actionPerformed(ActionEvent e) {
     
        ... // pareil que ce que tu avais fait, jusqu'à :
        if(selectedColor != null) {
          selectedNode.setBackground(selectedColor);
        }
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    Merci pour ton aide, mais je doit encore avoir un pb, je pense que cela provient de l'opacité du JLabel, enfin je ne suis pas sur mais si c'est cela, ou est que je peux modifier l'opacité?

  5. #5
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    C'est bon sa marche j'ai juste eu a faire un appel a setOpaque() dans la MyTreeCellRenderer et cela a suffit.

    Merci encore pour ton aide.

    A plus.

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

Discussions similaires

  1. [SWING][background] changer le background
    Par PoPeio dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 31/03/2006, 11h31
  2. [SWING]changer le background d'un JButton
    Par david06600 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/02/2006, 21h49
  3. [C#] Comment changer la police d'un treenode NodeFont?
    Par irnbru dans le forum Windows Forms
    Réponses: 13
    Dernier message: 25/11/2005, 17h35
  4. [API win32] Changer le background des menuPopup
    Par dalyusmo dans le forum MFC
    Réponses: 6
    Dernier message: 05/10/2005, 13h35
  5. [JTree] Changer les icônes
    Par Spoutnik dans le forum Composants
    Réponses: 4
    Dernier message: 12/09/2005, 08h54

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