2013-04-28 121 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); 
    } 
} 
相關問題