modules/javafx.controls/src/main/java/javafx/scene/chart/LineChart.java
Print this page
@@ -451,48 +451,19 @@
@Override protected void layoutPlotChildren() {
List<LineTo> constructedPath = new ArrayList<>(getDataSize());
for (int seriesIndex=0; seriesIndex < getDataSize(); seriesIndex++) {
Series<X,Y> series = getData().get(seriesIndex);
final DoubleProperty seriesYAnimMultiplier = seriesYMultiplierMap.get(series);
- if(series.getNode() instanceof Path) {
- final ObservableList<PathElement> seriesLine = ((Path)series.getNode()).getElements();
- seriesLine.clear();
- constructedPath.clear();
- for (Iterator<Data<X, Y>> it = getDisplayedDataIterator(series); it.hasNext(); ) {
- Data<X, Y> item = it.next();
- double x = getXAxis().getDisplayPosition(item.getCurrentX());
- double y = getYAxis().getDisplayPosition(
- getYAxis().toRealValue(getYAxis().toNumericValue(item.getCurrentY()) * seriesYAnimMultiplier.getValue()));
- if (Double.isNaN(x) || Double.isNaN(y)) {
- continue;
- }
- constructedPath.add(new LineTo(x, y));
-
- Node symbol = item.getNode();
- if (symbol != null) {
- final double w = symbol.prefWidth(-1);
- final double h = symbol.prefHeight(-1);
- symbol.resizeRelocate(x-(w/2), y-(h/2),w,h);
- }
- }
- switch (getAxisSortingPolicy()) {
- case X_AXIS:
- Collections.sort(constructedPath, (e1, e2) -> Double.compare(e1.getX(), e2.getX()));
- break;
- case Y_AXIS:
- Collections.sort(constructedPath, (e1, e2) -> Double.compare(e1.getY(), e2.getY()));
- break;
- }
-
- if (!constructedPath.isEmpty()) {
- LineTo first = constructedPath.get(0);
- seriesLine.add(new MoveTo(first.getX(), first.getY()));
- seriesLine.addAll(constructedPath);
- }
+ final Node seriesNode = series.getNode();
+ if (seriesNode instanceof Path) {
+ AreaChart.makePaths(this, series,
+ constructedPath, null, (Path) seriesNode,
+ seriesYAnimMultiplier.get(), getAxisSortingPolicy());
}
}
}
+
/** {@inheritDoc} */
@Override void dataBeingRemovedIsAdded(Data item, Series series) {
if (fadeSymbolTransition != null) {
fadeSymbolTransition.setOnFinished(null);
fadeSymbolTransition.stop();