JavaFX缩放图表系列单元

时间:2012-08-27 20:30:45

标签: java javafx-2

您好我有一个JavaFX LineChart,我想使用不同的单位重绘系列,我创建一个单独的列表使用转换因子计算新值,删除所有值并添加新值。

除非现在第一个点连接到前一个已经删除的点,否则这个效果很好。

任何想法如何避免这种情况?

for(XYChart.Series<Number, Number> series : _chart.getData())
{
    List<XYChart.Data<Number, Number>> data = series.getData();
    List<XYChart.Data<Number, Number>> newData = 
                                  new ArrayList<XYChart.Data<Number, Number>>();
    for(XYChart.Data<Number, Number> item : data)
    {
        newData.add(new XYChart.Data<Number, Number>(
                              item.getXValue(), 
                              item.getYValue().floatValue() * conversionFactor));
    }
    series.getData().remove(0, series.getData().size() - 1);
    for(XYChart.Data<Number, Number> item : newData)
    {
        series.getData().add(item);
    }
}

1 个答案:

答案 0 :(得分:1)

首先按series.getData().clear()清除数据。您也可以使用ObservableList来避免添加循环。

for (XYChart.Series<Number, Number> series : chart.getData()) {
    List<XYChart.Data<Number, Number>> data = series.getData();
    ObservableList<XYChart.Data<Number, Number>> newData =
            FXCollections.<XYChart.Data<Number, Number>>observableArrayList();
    for (XYChart.Data<Number, Number> item : data) {
        newData.add(new XYChart.Data<Number, Number>(
                item.getXValue(),
                item.getYValue().floatValue() * 1.1));
    }
    series.getData().clear();
    series.setData(newData);
}