java - 为什么在尝试将数据放入我的 JavaFX 散点图中时出现 IndexOutOfBoundsException?

标签 java javafx

我遇到了 JavaFX ScatterChart 组件的恼人错误。我想创建一个不断获得更多积分的图表。为此,我首先创建一个新系列,将其添加到图表中,然后开始向该系列添加点。

这在折线图中效果很好。但是,出于某种原因,当我尝试对 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 散点图中时出现 IndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857934/

相关文章:

Java OpenCV haarcascade_frontalface_default.xml

java - 如何在 JavaFX 中的 Accordion 中的 TitledPanes 之间添加填充

java - 将信息传递给 JavaFX Button handler() 例程

java - 无法在 BorderPane 中 Pos.CENTER

java - 防止仅由用户调整 TableColumn 的大小

java - Android Studio 自定义声音基于主题通知 FCM

java - 在eclipse插件中访问图像

java - 没有同步或 volatile 关键字的延迟初始化

在 IntelliJ 中运行 Main 时,JavaFX 应用程序运行正常,构建的 jar 无法运行

java - 如何上传图片并将其保存在数据库中?