问题描述
我正在尝试创建一个 scala 程序,该程序使用从 JavaFX SceneBuilder 为 GUI 生成的 FXML 文件。尽管 https://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm 是 Java,但我将其用作示例起点。 (找不到更好的了。)
如果我使用控制器类的 Java 版本,我就能运行这个示例,如示例中所示。 (适用于扩展 Application 的类的 Java 版本或 Scala 版本,并在其中包含重写的 start 方法。)但是如果我用 Scala 版本替换这个 Java 版本控制器类,我会收到以下错误:
线程“JavaFX 应用程序线程”中的异常 java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 在 javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
当我使用菜单项代码/将 Java 转换为 Scala 时,Intellij 将 Java 版本控制器(我称之为 jController)转换为 Scala 版本(我称之为 sController):
import javafx.event.ActionEvent
import javafx.fxml.FXML
import javafx.scene.text._
class sController {
@FXML private val actiontarget: Text = null
@FXML protected def handleSubmitButtonAction(event: ActionEvent): Unit = {
actiontarget.setText("Sign in button pressed")
}
}
当然我也把 我还尝试修改控制器的 Scala 版本,从上面由 Intellij 生成的代码开始,但没有任何效果。 如果我更换 与 然后它无一例外地运行,但不响应按下的按钮。 我还尝试了示例中显示的 javascript 版本来代替控制器版本,但我对 javascript 一无所知,而且 Intellij 似乎不再提供“JavaScript 和 TypeScript 捆绑插件”到这里:https://www.jetbrains.com/help/idea/2020.3/javascript-specific-guidelines.html#ws_JavaScript_before_you_start 我尝试了不同的 javascript 和 typescript 插件,但没有帮助。 任何想法,或者这篇文章是否正确? https://bugs.openjdk.java.net/browse/JDK-8116127@FXML private val actiontarget: Text = null
@FXML private val actiontarget: Text = new Text()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)