--- old/modules/controls/src/main/java/javafx/scene/chart/BarChart.java 2016-07-27 13:44:25.860008700 +0300 +++ new/modules/controls/src/main/java/javafx/scene/chart/BarChart.java 2016-07-27 13:44:25.638996000 +0300 @@ -54,6 +54,7 @@ import javafx.css.PseudoClass; import javafx.css.converter.SizeConverter; +import javafx.collections.ListChangeListener; import javafx.css.Styleable; import javafx.css.StyleableProperty; @@ -267,6 +268,19 @@ } } + @Override protected void seriesChanged(ListChangeListener.Change c) { + // Update style classes for all series lines and symbols + // Note: is there a more efficient way of doing this? + for (int i = 0; i < getDataSize(); i++) { + final Series series = getData().get(i); + for (int j=0; j item = series.getData().get(j); + Node bar = item.getNode(); + bar.getStyleClass().setAll("chart-bar", "series" + i, "data" + j, series.defaultColorStyleClass); + } + } + } + @Override protected void seriesAdded(Series series, int seriesIndex) { // handle any data already in series // create entry in the map @@ -297,7 +311,6 @@ } @Override protected void seriesRemoved(final Series series) { - updateDefaultColorIndex(series); // remove all symbol nodes if (shouldAnimate()) { pt = new ParallelTransition(); @@ -541,16 +554,6 @@ } } - private void updateDefaultColorIndex(final Series series) { - int clearIndex = seriesColorMap.get(series); - for (Data d : series.getData()) { - final Node bar = d.getNode(); - if (bar != null) { - bar.getStyleClass().remove(DEFAULT_COLOR+clearIndex); - } - } - } - private Node createBar(Series series, int seriesIndex, final Data item, int itemIndex) { Node bar = item.getNode(); if (bar == null) { @@ -560,7 +563,7 @@ bar.focusTraversableProperty().bind(Platform.accessibilityActiveProperty()); item.setNode(bar); } - bar.getStyleClass().addAll("chart-bar", "series" + seriesIndex, "data" + itemIndex,series.defaultColorStyleClass); + bar.getStyleClass().setAll("chart-bar", "series" + seriesIndex, "data" + itemIndex,series.defaultColorStyleClass); return bar; }