2

我需要建立一个

LineChart<Number,Number>

我将数据存储在

ObservableList<MyData>

MyData有 4 个变量,全部都是int. 让我们说变量MyData是: No1, No2, No3, No4

接下来,我需要构建

LineChart<Number,Number>

我只需要No1No2变量,但我不知道如何从中获取该值ObservableList,现在我只是用来XYChart.DataXYChart.Series我的LineChart<Number,Number>这样的添加新数据:

private static XYChart.Series dataLineChart = new XYChart.Series();
public static void updateDataChart(){
    dataLineChart.getData().addAll(
                new XYChart.Data(3,15),
                new XYChart.Data(7,20)
            );
}

如果我可以从中获取价值,ObservableList我可以简单地使用:

private static XYChart.Series dataLineChart = new XYChart.Series();
public static void updateDataChart(){
    dataLineChart.getData().addAll(
                myObservableList
            );
}

有人可以帮我解决这个问题吗?

4

1 回答 1

4

无论如何,您都需要创建一个新列表。这不是问题,速度很快,并且只会使用一点新内存(仅用于处理程序,不适用于对象):

如果您知道所需项目的位置,您可以使用List#subList()方法。

private static XYChart.Series dataLineChart = new XYChart.Series();
public static void updateDataChart(){
    dataLineChart.getData().addAll(
            myObservableList.subList(0,2);
    );
}

如果项目不是结果,您可以在一行中创建新列表:

ObservableList<String> sublist = FXCollections.observableArrayList( 
                     myObservableList.get(3), myObservableList.get(5) );

如果您使用您的条件直接在更新方法中将旧列表过滤为新列表,您也可以保存在新列表中:

public static void updateDataChart(){
    for (MyData data : myObservableList) {
        if ( data.isLucky() ) // or whatever is your condition
            dataLineChart.getData().add(data);
    }
}
于 2013-04-28T16:55:05.433 回答