Comment faire pour modifier le style (couleur, police) d'un seul nœud JTree
J'ai deux JTree
en deux panneaux dans un JFrame
. Je veux changer le style(couleur et police) de nœuds sur un glisser-déposer à partir d'un arbre à l'autre.Merci de me fournir un moyen de changer la couleur d'un JTree
nœud de façon permanente.
OriginalL'auteur soumitra chatterjee | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
Pour commencer, vous aurez besoin d'avoir un objet de données qui peut gérer le style et la couleur. Vous pourriez sous-classe DefaultMutableTreeNode et ajouter ces éléments de données avec getts et setters
Alors vous auriez besoin de créer un personnalisé TreeCellRenderer. Je recommande l'extension de DefaultTreeCellRenderer, et dans le substituée gestionnaire, de la vérification de votre classe personnalisée et modifier le JLabel sortie d'utiliser la Police de caractères et la Couleur si ces valeurs sont définies
Non, il serait utile si VOUS avez fourni une partie du code. Ensuite, nous pourrions vous aider à réparer ce qui n'allait pas avec elle
+1 pour
TreeCellRenderer
. @soumitrachatterjee: Un exemple similaire peut être trouvé ici; l'ajout desetForeground(Color.blue)
peut vous aider à créer un sscce.user1291492 pas de chance...merci de m'aider un peu....je suis en train d'essayer avec votre exemple...j'ai deux DefaultMutableTreeNode objets :DefaultMutableTreeNode parent = (DefaultMutableTreeNode) chemin d'accès .getLastPathComponent(); DefaultMutableTreeNode node = new DefaultMutableTreeNode(élément);
je veux de la couleur de ce parent et le noeud de l'objet....dans la méthode, je vais passer ces deux comme argument.???S'Il Vous Plaît Aider...
OriginalL'auteur ControlAltDel
Créer votre propre
CellRenderer
. Pour donner le comportement approprié à votreMyTreeCellRenderer
, vous devrez étendreDefaultTreecellRenderer
et remplacer legetTreeCellRendererComponent
méthode.Enfin, disons que votre arbre est appelé
myTree
, définissez votreCellRenderer
:Cela fonctionne parfaitement, un grand morceau de code! Mais, si voulez changer aussi la couleur de fond de l'arbre? Lorsque dans la
MyTreeCellRenderer
, sous la lignesetForeground(new Color(13, 57 ,115));
, j'écrissetBackground(Color.YELLOW);
, le fond de l'arbre ne se tourne pas vers le jaune..Voir si stackoverflow.com/questions/16500414/... aide
OriginalL'auteur Stéphane Bruckert