2013-01-23 30 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