2015-10-05 180 views
1

在我的應用程序(JDK 1.8u51)中,我想爲StackedBarChart中的某些數據類別設置一些特定的顏色。我用CSS使這個波紋管:JavaFX StackedBarChart圖例顏色不遵循圖表顏色CSS樣式

.root{ 
    -fx-ok-color: darkgreen; 
    -fx-critical-color: darkblue; 
    -fx-warning-color: gold; 
    -fx-minor-color: orange; 
    -fx-major-color: red; 
    -fx-undefined-color: darkgrey; 
} 
.okChartBar{ 
    -fx-bar-fill : -fx-ok-color; 
} 
.warnigChartBar{ 
    -fx-bar-fill : -fx-warning-color; 
} 
.minorChartBar{ 
    -fx-bar-fill : -fx-minor-color; 
} 
.majorChartbar{ 
    -fx-bar-fill : -fx-major-color; 
} 
.criticalChartBar{ 
    -fx-bar-fill : -fx-critical-color; 
} 
.undefinedChartBar{ 
    -fx-bar-fill : -fx-undefined-color; 
} 

我用這個CSS在我的代碼是這樣的:

StackedBarChart barChart = new StackedBarChart(new CategoryAxis(), new NumberAxis()); 
barChart.setTitle("Title"); 
vBox.getChildren().add(1,barChart); 
barChart.setAnimated(true); 
barChart.getData().addAll(barChartData()); 
barChart.getData().forEach(data ->{ 
    XYChart.Series moduleSerie = (XYChart.Series)data; 
    moduleSerie.getData().forEach(item ->{ 
     XYChart.Data item2 = (XYChart.Data)item; 
     item2.getNode().getStyleClass().add(styleLink.get(moduleSerie.getName())); 
     // styleLink is a map which containt the link from the alarm type (minor, major....) to the CSS style (minorChartbar, majorChartbar, ...) 
    }); 
}); 

我得到儘可能reslut這是這樣一個StackedBarChart: Example of not same color between chart and legend

正如您所看到的,圖表區域和圖例之間的顏色並不相同。 「關鍵」值必須是藍色,「主要」必須是紅色。

這是一個JavaFX錯誤還是隻是我的代碼?

對不起,我只想盡可能完整。

回答

0

對於那些誰搜索,我發現其他2個問題的答案:

我也不得不加入.chart-legend-item-symbol到每個樣式類在我的CSS是這樣的:

.okChartBar .chart-legend-item-symbol{ 
    -fx-background-color:-fx-ok-color; 
} 
+0

嗨,我有同樣的問題,但th在代碼片段中的兩個答案沒有爲我工作,你能幫忙嗎? –