2

私は構築する必要があります

LineChart<Number,Number>

データを保存していました

ObservableList<MyData>

MyData4つの変数があり、すべてがint. の変数は次のMyDataとおり No1, No2, No3, No4です。

次に、ビルドする必要があります

LineChart<Number,Number>

No1と変数だけが必要ですNo2が、 からその値を取得する方法がわかりませんObservableList。今、次のように に新しいデータを追加するために使用しますXYChart.DataXYChart.SeriesLineChart<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);
    );
}

項目が結果でない場合は、新しいリストを 1 行で作成できます。

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 に答える