我遇到了JavaFX ScatterChart组件的烦人错误。我想创建一个图表,不断添加更多的积分。为此,我首先创建一个新系列,将其添加到图表中,然后开始向该系列添加点。
在LineChart中可以正常工作。但是由于某种原因,当我尝试对ScatterChart执行相同操作时会得到一个IndexOutOfBoundsException
。
这是针对这种情况的隔离测试用例:
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)
有人知道为什么会这样吗?
最佳答案
IMO这是一个错误,您可以将其提交到JavaFX Jira。
解决方法是最后添加系列:
series.getData().add(new XYChart.Data<Number, Number>(4.2, 2.4));
chart.getData().add(series);
关于java - 尝试将数据放入JavaFX ScatterChart时为什么会出现IndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19857934/