2013-04-28 107 views
2

仅取一定的价值,我需要建立一个从JavaFX的ObservableList

LineChart<Number,Number> 

我已经存储的数据在

ObservableList<MyData> 

MyData有4个变量,这一切都是int。我们只需要说MyData中的变量是:No1, No2, No3, No4

接下来,我需要建立

LineChart<Number,Number> 

,我只需要No1No2可变的,但我不知道如何利用该值从ObservableList,现在我只用XYChart.Data添加新数据我LineChart<Number,Number>这样XYChart.Series

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

这似乎对我来说,有没有更好的解决办法,而不是数据从您观察到的数组列表转换成数组列表,作为图表的数据参数... – 2013-04-28 10:55:14

+0

@AlexanderKiro v:是的,但它太浪费了,我已经有了这些数据,但仍然需要将它转换为另一种类型的列表才能使用它们:( – 2013-04-28 11:53:28

+0

我已经创建了一个RFE:https://javafx-jira.kenai.com/browse/RT-30059,你可以跟踪它的进度和讨论。 – 2013-04-28 12:05:03

回答

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); 
    } 
} 
相关问题