如何在Scala FXML控制器中设置线性图表?

时间:2014-04-29 13:51:40

标签: scala scalafx

我正在尝试构建一个显示线性图表的ScalaFX应用程序。

我已将折线图控制器成员定义为

@javafx.fxml.FXML
private val lineChart: XYChart = _

我正在尝试使用

添加数据
val data = ObservableBuffer(Seq(
  (1, 23),
  (2, 14),
  (3, 15)
) map {case (x, y) => XYChart.Data[Number, Number](x, y).delegate} )

val series = XYChart.Series[Number, Number]("My series", data)
lineChart.data.set(series)

但我在这里得到2个错误:

First Idea突出显示“系列”(在lineChart.data.set(series)中)并说“类型不匹配,预期:ObservableList [XYChart.Series [X,Y]],实际XYChart.Series [数字,数字]”

第二 - 当我尝试构建时,我得到“未绑定的占位符参数private val lineChart:XYChart = _”错误。

有什么建议吗?                                    ^

1 个答案:

答案 0 :(得分:0)

我自己找到了答案,让我分享给任何可能遇到同样问题的人。

  • 使用var,而不是val

  • 使用LineChart类型,而不是XYChart

  • 指定图表轴类型

  • 使用javafx.scene.chart.LineChart,而不是scalafx.scene.chart.LineChart(如果有人可以通过ScalaFX建议正确的方式,会很好)

错:

private val lineChart: XYChart = _

右:

private var lineChart: LineChart[Number, Number] = _
  • 使用lineChart.getData.add(series),而不是lineChart.data.set(series)

  • fx:controller设置为FXML代码中的控制器全名(不是由Scene Designer添加)

然后按预期工作。