1

JavaFX ScatterChart コンポーネントで厄介なエラーが発生しました。常により多くのポイントが追加されるチャートを作成したいと考えています。そのために、まず新しいシリーズを作成し、それをグラフに追加してから、そのシリーズにポイントを追加し始めます。

これは LineChart でうまく機能します。ただし、何らかの理由でIndexOutOfBoundsException、ScatterChart で同じことをしようとすると、エラーが発生します。

以下は、この状況の分離されたテスト ケースです。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class Test extends Application {
    @Override 
    public void start(Stage stage) {
        stage.setTitle("Scatter Chart");

        NumberAxis xAxis = new NumberAxis(0, 10, 1);
        NumberAxis yAxis = new NumberAxis(0, 10, 1);        
        ScatterChart<Number, Number> chart = new ScatterChart<Number, Number>(xAxis,yAxis);

        XYChart.Series<Number, Number> series = new XYChart.Series<Number, Number>();
        chart.getData().add(series);
        series.getData().add(new XYChart.Data<Number, Number>(4.2, 2.4));

        Scene scene  = new Scene(chart, 500, 400);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

例外の関連部分は次のとおりです。

Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrapper.java:208)
at javafx.scene.chart.ScatterChart.updateLegend(ScatterChart.java:188)
at javafx.scene.chart.XYChart$2.onChanged(XYChart.java:132)
at com.sun.javafx.collections.ListListenerHelper$SingleChange.fireValueChangedEvent(ListListenerHelper.java:134)
at com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:48)
at com.sun.javafx.collections.ObservableListWrapper.callObservers(ObservableListWrapper.java:97)
at com.sun.javafx.collections.ObservableListWrapper.add(ObservableListWrapper.java:154)
at com.sun.javafx.collections.ObservableListWrapper.add(ObservableListWrapper.java:144)
at Test.start(Test.java:20)

なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1