Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用scala制作FXML控制器?_Java_Scala_Intellij Idea_Javafx_Fxml - Fatal编程技术网

Java 如何使用scala制作FXML控制器?

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

我试图使用创建一个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)的内容:

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()