我有一些StackedBarChart包含各種系列。java fx圖表上的自定義選擇器
StackedBarChart.Series<String, Number> series1= new StackedBarChart.Series<String, Number>(
FXCollections.observableArrayList(list1));
StackedBarChart.Series<String, Number> series2= new StackedBarChart.Series<String, Number>(
FXCollections.observableArrayList(list2));
StackedBarChart.Series<String, Number> series3= new StackedBarChart.Series<String, Number>(
FXCollections.observableArrayList(list3));
ObservableList<StackedBarChart.Series<String, Number>> barChartData = FXCollections
.observableArrayList(series1, series2,
series3);
final StackedBarChart<String, Number> chart = new StackedBarChart<String, Number>(
xAxis, yAxis, barChartData);
我想更改系列的默認顏色。 所以我增加了一個自定義的CSS樣式表
chart.getStylesheets().add("path to the CSS file");
在CSS文件,我可以用某物覆蓋默認的顏色像
.default-color0 {
-fx-bar-fill: limegreen;
}
.default-color1 {
-fx-bar-fill: orange;
}
.default-color2 {
-fx-bar-fill: tomato;
}
這完美的作品,但它只是我的顏色替換默認的顏色。 如果我將它們添加到圖表時更改了系列的訂單,它們將切換它們的顏色。
我想在我的CSS更精確的與某物像
.series1.color {
-fx-bar-fill: limegreen;
}
.series2.color {
-fx-bar-fill: orange;
}
.series2.color {
-fx-bar-fill: tomato;
}
,並直接添加這些自定義選擇該系列,而不是餵養與CSS樣式表的圖表。 我知道有自定義選擇器,您可以使用setId(..)
方法在節點上設置,但我無法管理它。
我也瞭解lookup
方法,但我覺得它不是優雅的,因爲在所有你必須調用它之後的圖表被渲染(因此你可以看到的顏色閃爍非常快原來的顏色和新的之間的)
所以我的問題是: 我如何定義CSS選擇器一樣
.series1.color {
-fx-bar-fill: limegreen;
}
.series2.color {
-fx-bar-fill: orange;
}
.series2.color {
-fx-bar-fill: tomato;
}
和編程方式將其應用到圖表系列我想
series1.applySelector(".series1.color");
因此,即使該系列被插入的圖表中不同的順序,他們仍然可以得到顏色我想
問題是什麼? – Math
我添加了它,你是對的,它不清楚:) – facewindu