我需要建立一个
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
);
}
有人可以帮我解决这个问题吗?
最佳答案
无论如何,您都需要创建一个新列表。没问题,它很快,将只使用少量新内存(仅用于处理程序,不用于对象):
如果知道所需项目的位置,则可以使用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);
}
}