Java 如何使用scala制作FXML控制器?
我试图使用创建一个scala程序,该程序使用JavaFXSceneBuilder为GUI生成的FXML文件。虽然它是java,但我将它作为我的示例起点。(找不到更好的了。) 如果我使用controller类的java版本,我就能够运行这个示例,如示例所示。(适用于扩展应用程序的类的java版本或scala版本,该类中包含重写的start方法。)但如果我将此java版本控制器类替换为scala版本,则会出现以下错误: 线程“JavaFX应用程序线程”java.lang.RuntimeException中的异常:java.lang.reflect.InvocationTargetException 在javafx.fxml.fxmloader$MethodHandler.invoke(fxmloader.java:1774) 以下是Intellij在使用菜单项Code/Convert java to scala时将java版本控制器(我称之为jController)转换为scala版本(我称之为Scoontroller)的内容:Java 如何使用scala制作FXML控制器?,java,scala,intellij-idea,javafx,fxml,Java,Scala,Intellij Idea,Javafx,Fxml,我试图使用创建一个scala程序,该程序使用JavaFXSceneBuilder为GUI生成的FXML文件。虽然它是java,但我将它作为我的示例起点。(找不到更好的了。) 如果我使用controller类的java版本,我就能够运行这个示例,如示例所示。(适用于扩展应用程序的类的java版本或scala版本,该类中包含重写的start方法。)但如果我将此java版本控制器类替换为scala版本,则会出现以下错误: 线程“JavaFX应用程序线程”java.lang.RuntimeExcepti
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")
}
}
当然,我也改变了你在哪里学的
@FXML-private-val-actiontarget:Text=null
?你试过@FXML-private-val-actiontarget代码>?发布完整的堆栈跟踪(将其格式化为代码)以及FXML文件“=null”是我使用菜单项code/Convert Java to Scala时Intellij生成的(我相信它来自Scalagen,Java-to-Scala转换器插件。Sedrick,感谢您提供了该示例的链接。不幸的是,它使用了ScalaFX和作者编写的一个名为ScalaFXML的小型库。我只想在GUI中使用JavaFX SceneBuilder,而不是ScalaFX。我相信这是JVM asid最现代/最成熟的GUI框架因此,由于其他方法并不直接、干净和成熟,我想我会选择:SceneBuilder为GUI生成FXML,java为控制器生成java,scala为其他所有方法生成FXML。
@FXML private val actiontarget: Text = null
@FXML private val actiontarget: Text = new Text()