1 pièce(s) jointe(s)
Modifier les symboles de légende autrement que via le fichier CSS
Bonjour,
Je réalise une petite application pour découvrir javafx et plus particulièrement les linecharts. Sur un linechart, j'affiche soit une ou deux courbes d'une semaine issue(s) d'une base de données. Je change donc les couleurs pour mettre en bleu quand il y en a qu'une seule, et mettre en vert une courbe particulière et une autre en bleu quand il y en a deux. Pour ce faire, je passe par ce morceau de code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
if(taille > 1)
{
lineChart.lookupAll(".default-color0.chart-series-line").forEach(ee -> ee.setId("seriesOld"));
lineChart.lookupAll(".default-color0.chart-line-symbol").forEach(ee -> ee.setId("legendOld"));
lineChart.lookupAll(".default-color0.chart-legend-item-symbol").forEach(ee -> ee.setId("legendOld"));
lineChart.lookupAll(".default-color1.chart-series-line").forEach(ee -> ee.setId("seriesCurr"));
lineChart.lookupAll(".default-color1.chart-line-symbol").forEach(ee -> ee.setId("legendCurr"));
lineChart.lookupAll(".default-color1.chart-legend-item-symbol").forEach(ee -> ee.setId("legendCurr"));
}
else{
lineChart.lookupAll(".chart-series-line").forEach(ee -> ee.setId("seriesCurr"));
lineChart.lookupAll(".chart-line-symbol").forEach(ee -> ee.setId("legendCurr"));
lineChart.lookupAll(".chart-legend-item-symbol").forEach(ee -> ee.setId("legendCurr"));
} |
Tout passe bien sauf les lignes liées aux éléments récupérés via: ".chart-legend-item-symbol"
En effet, si je fais un size() après le lookupAll, j'obtiens zéro comme valeur sauf si je les mets après le stage.show(). Ce n'est pas très pratique vu que lors d'événements comme un changement de semaine, ce n'est pas pris en compte (techniquement ce changement intervient dans le temps quand même après l'exécution de la méthode stage.show()).
La partie css:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#seriesOld{
-fx-stroke: green;
}
#legendOld {
-fx-background-color: green,white;
-fx-scale-x:1.3;
-fx-scale-y:1.3;
}
#seriesCurr{
-fx-stroke: blue;
}
#legendCurr{
-fx-background-color: blue,white;
-fx-scale-x:1.3;
-fx-scale-y:1.3;
} |
Il est à noter que si je ne mets rien dans le code java et qu'au niveau css, je me contente de mettre comme ci-dessous sur ".chart-line-symbol", les couleurs des symboles sur la courbe et sur la légende sont gérées en même temps. Néanmoins, cela ne me permet pas de créer un ordre correct dans la légende lorsque j'ai deux courbes et le respect des couleurs dans le cas d'une seule. Pis, via le code java, ".chart-line-symbol" joue seulement sur les symboles de la courbe mais pas ceux de la légende.
Code:
1 2 3
|
.default-color0.chart-line-symbol { -fx-background-color: green,white}
.default-color1.chart-line-symbol { -fx-background-color: blue,white} |
Au niveau de l'application, voici de quoi je parle au niveau du problème (la couleur des symboles que j'ai entourés en rouge):
Pièce jointe 174713
Je vous remercie d'avance pour votre aide.
Vinz