Bonjour,
Je cherche a changer la couleur (background) de certaines node d'un treeview.
Comment puis-je m'y prendre ?
Merci
Version imprimable
Bonjour,
Je cherche a changer la couleur (background) de certaines node d'un treeview.
Comment puis-je m'y prendre ?
Merci
CSS : en mettant un style inline ou un style de classe ou une pseudoclasse sur la cellule en fonction de son contenu.
- Style inline :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 public class MachinTreeCell extends TreeCell<Machin> { @Override protected void updateItem(final MachinTreeCell item, final boolean empty) { super.updateItem(item, empty); setStyle(null); [...] if (<test sur le contenu>) { setStyle("-fx-background-fill: red;"); [...] } [...] } }
- Style de classe :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 public class MachinTreeCell extends TreeCell<Machin> { @Override protected void updateItem(final MachinTreeCell item, final boolean empty) { super.updateItem(item, empty); getStyleClass().remove("machin-chose"); [...] if (<test sur le contenu>) { getStyleClass().add("machin-chose"); [...] } [...] } }
Code:
1
2
3
4 /* Cellule spéciale. */ .machin-chose { -fx-background-fill: red; }
- Les pseudo-classes :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class MachinTreeCell extends TreeCell<Machin> { private static final PseudoClass MACHIN_CHOSE_CLASS = PseudoClass.getPseudoClass("machin-chose"); // NOI18N. public MachinTreeCell() { getStyleClass().add("machin-tree-cell"); } @Override protected void updateItem(final MachinTreeCell item, final boolean empty) { super.updateItem(item, empty); pseudoClassStateChanged(MACHIN_CHOSE_CLASS, false); [...] if (<test sur le contenu>) { pseudoClassStateChanged(MACHIN_CHOSE_CLASS, true); [...] } [...] } }
Code:
1
2
3
4
5
6
7 /* Cellule normale. */ .machin-tree-cell { } /* Cellule spéciale. */ .machin-tree-cell:machin-chose { -fx-background-fill: red; }
D'entre le style de classe et les pseudo-classes, normalement c'est le second qui coute le moins en terme de performances.