2013-01-23 31 views
1

我知道我可以設置圖例項的設置顏色,此代碼:了JavaFx BARCHART傳奇色彩

for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) { n.setStyle("-fx-background-color: " + "red"+ ";"); }

但它僅適用,當我第一次將數據添加到圖表的則圖表到現場。 像這樣:

final XYChart.Series<String, Number> series = new XYChart.Series<String, Number>(); 
XYChart.Data<String, Number>bar = new XYChart.Data<String, Number>("test", 120); 
series.getData().add(bar); 

chart.getData().add(series); 

chartFxPanel.setScene(new Scene(chart)); 

for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) { 
    n.setStyle("-fx-background-color: " + "red"+ ";"); 
    } 

但我想以後圖表已添加到場景中,將數據添加到圖表。如果我這樣做,它不會改變圖例的顏色項目:

final XYChart.Series<String, Number> series = new XYChart.Series<String, Number>(); 
XYChart.Data<String, Number>bar = new XYChart.Data<String, Number>("test", 120); 
series.getData().add(bar); 


chartFxPanel.setScene(new Scene(chart)); 
chart.getData().add(series); 


for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) { 
    n.setStyle("-fx-background-color: " + "red"+ ";"); 
    } 

如何更改圖例項目的顏色?

回答

2

如果您在Platform.runLater調用中打包查找/ setStyle代碼(或最壞的情況,使用這樣的example),它可能會起作用。這些構造使JavaFX系統有機會在下一個脈衝上處理和設置數據項更改,以便隨後覆蓋它。

你爲什麼不能使用css樣式表而不是使用java代碼查找自定義樣式的任何原因?也就是說,使用與JavaFX chart styling guide中概述的類似的技術。那麼你就不需要處理查找時間相關的問題,這似乎更可取。

+1

謝謝你的回答。我需要一張動態圖表,這樣我就不能使用固定數量的顏色來顯示酒吧。 – Whatever