ScalaFX 和 FXML 示例似乎不起作用

ScalaFX and FXML example doesnt seem to work

我按照这个例子here

object DataEditor extends JFXApp {
  val resource = getClass.getResource("MainWindowView.FXML")
  if(resource == null){
    throw new IOException("Cannot load Resource")
  }
  val root:jfxs.Parent = jfxf.FXMLLoader.load(resource)

  stage = new PrimaryStage {
    title = "Data Editor"
    scene = new Scene(root)
  }
}

但由于某些原因 new Scene(root) 不能用作构造函数。

Root 应该是 javafx.scene 而 stage.scene 是 scalafx.scene.Scene 所以生成 root javafx.Parent 是行不通的。

在制作这些示例后,scalafx 是否有任何更改??

答案是因为我在 SFXML 和普通 scalaFX 中间卡住了东西

我发现的第一件事是 import scalafx.Includes._,这是我在示例中设法忽略的一行 "magic line",它修复了 javaFX 和 scalaFX 之间的所有怪异之处。这修复了 scene = new Scene(root)

No constructor 错误

我的控制器上有一个 @sfxml 注释 class 但没有使用 SFXML 的 FXMLView 加载它,这导致 javafx 找不到无参数构造函数。

最后,FXMLView 需要一个依赖解析器(即 Subcut),但他们也有一个 NoDependencyResolver 对象来拯救我们这些甚至还不需要的凡人的培根 FXMLView(resource, NoDependencyResolver)