首先是工作代码:
val root: BorderPane = new BorderPane(jfxf.FXMLLoader.load(getClass.getResource("/GUI/main.fxml")))
stage = new PrimaryStage()
{
title = "FXML Test"
scene = new Scene(root)
}
这里没问题。现在我想像这样添加 i18n 支持:
val bundle: ResourceBundle = new PropertyResourceBundle(getClass.getResource("/i18n/en.properties").openStream)
val loader: FXMLLoader = new FXMLLoader(getClass.getResource("/GUI/main.fxml"), bundle)
val root = loader.load[jfxs.Parent]
stage = new PrimaryStage()
{
title = "FXML Test"
scene = new Scene(root)
}
现在scene = new Scene(root)
无法解析构造函数。
我试图通过
1) 初始化一个新的 BorderPane,如:
val root = new BorderPane(loader.load[jfxs.Parent])
但是 BorderPane 的构造函数无法解析所以我尝试了
2) 将其投射到 BorderPane,例如:
val root = new BorderPane(loader.load[jfxs.Parent].asInstanceOf[BorderPane])
这在 IDE 中没问题,但会引发编译器错误:
引起:java.lang.ClassCastException:javafx.scene.layout.BorderPane 无法转换为 scalafx.scene.layout.BorderPane
我该如何解决这个问题?