我需要建立一个
LineChart<Number,Number>
我将数据存储在
中ObservableList<MyData>
MyData
有4个变量,全部都是int
。我们只需说MyData
中的变量为:No1, No2, No3, No4
。
接下来,我需要构建
LineChart<Number,Number>
我只需要No1
和No2
变量,但我不知道如何从ObservableList
获取该值,现在我只使用XYChart.Data
添加新值我的XYChart.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
);
}
有人可以帮我解决这个问题吗?
答案 0 :(得分: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);
}
}