【问题标题】:Is it possible to create an array of XYChart.Series on JavaFX?是否可以在 JavaFX 上创建 XYChart.Series 数组?
【发布时间】:2016-12-11 22:52:03
【问题描述】:

我想知道我是否可以在 JavaFX 上创建一个 XYChart.Series<String, Number> 数组?

因为我需要为数据库中的每个人创建一个XYChart.Series,并且我尝试为我的LineChart 创建一个XYChart.Series<String, Number> 数组,但我做不到。

这是我尝试过的:

List<XYChart.Series<String, Number>> seriesList = new ArrayList<XYChart.Series<String, Number>>();

因为我不知道该怎么做。

你能帮帮我吗?

【问题讨论】:

  • 图表采用 ObservableList 的系列数据作为 setData() 方法,因此您可以先拥有 ObservableList&lt;XYChart.Series&lt;String, Number&gt;&gt; seriesList = FXCollections.observableArrayList(); 然后 chart.setData(seriesList); 或者您可以在构建它时为每个调用 chart.getData().add(mySeries); /them,它使用新图表中的默认集合。

标签: arrays javafx charts javafx-8 series


【解决方案1】:

您可以创建原始类型的数组并将其分配给使用泛型类型声明的变量。

int size = ...
XYChart.Series<String, Number>[] seriesArray = new XYChart.Series[size];

更新

数组元素仍然需要以这种方式初始化,因为以这种方式生成的数组填充有null元素。

Java 8 提供了一种通过流 API 使用短代码创建和初始化数组的方法:

XYChart.Series<String, Number>[] seriesArray = Stream.<XYChart.Series<String, Number>>generate(XYChart.Series::new).limit(size).toArray(XYChart.Series[]::new);

【讨论】:

  • 谢谢 :),但为什么它在这里给了我 NullPointerException:seriesArray[i].setName("emri");
  • @ErtanHasani 数组填充有null 元素,如果它们是使用Type[size] 创建的。您仍然需要将实例分配给数组的元素。
  • 我在第一行添加了这一行 series[i] = new XYChart.Series();现在我在线程“JavaFX 应用程序线程”java.lang.ClassCastException:[Ljavafx.scene.chart.XYChart$Series;无法转换为 javafx.scene.chart.XYChart$Series
  • 不确定您究竟是如何设法创建此异常的,但[Ljavafx.scene.chart.XYChart$Series;javafx.scene.chart.XYChart.Series 的数组,因此您尝试将这样的数组分配给javafx.scene.chart.XYChart.Series 目标类型。跨度>
  • 对不起,我的错。我的代码上还有其他东西使它出来了。发现了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多