首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FXMLLoader?

如何使用FXMLLoader?
EN

Stack Overflow用户
提问于 2012-10-07 12:00:39
回答 1查看 2.9K关注 0票数 1

我已经将问题归结为Scala + JavaFX 2的FXMLLoader的简单行:

代码语言:javascript
复制
val path = "/com/myapp/views/main.fxml"

val loader = new FXMLLoader()
loader.setLocation(getClass.getResource(path))

val root = loader.load(getClass.getResourceAsStream(path)).asInstanceOf[Parent]

我试图使用main.fxml加载一个FXMLLoader文件,但最终得到的结果是:

类javafx.fxml.FXMLLoader$ValueElement不能使用“私有”修饰符访问类com.myapp.controllers.MainWindow的成员

FXML代码如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.collections.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.Scene?>
<?import javafx.scene.control.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<BorderPane fx:controller="com.myapp.controllers.MainWindow" fx:id="mainWindow" prefHeight="703.0" prefWidth="803.0" xmlns:fx="http://javafx.com/fxml">
  <stylesheets>
    <URL value="@../styles/Styles.css" />
  </stylesheets>
  <top>
  ...

根据错误消息,JavaFX的FXMLLoader试图访问my控制器的一些私有属性。然而,我在控权人中并无私人成员:

代码语言:javascript
复制
class MainWindow extends Initializable {
  override def initialize(location: URL, resourceBundle: java.util.ResourceBundle) {
    print("init")
  }
}

有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-07 12:36:47

错误指向私有构造函数。您需要在Scala中显式地公开构造函数吗?您可以使用javap查看编译的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12768623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档