当前位置: 首页 > 知识库问答 >
问题:

设置根时的JavaFx FXML加载文件问题

郎健柏
2023-03-14

刚接触javaFx并希望使用scenebuilder进行GUI开发时,我遇到了一个问题,在网站上或整个web上搜索我的问题时都没有运气,尽管有人问过类似的问题,认为可能需要一个不同的视角。我试图在快速构建之后通过Netbeans加载一个FXML文件,以测试功能,这样代码就简单了,但是我无法在控制器中设置根文件。我的代码是下面的公共类Divergex extends Application{

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("DivergexGUI.fxml"));


    Scene scene = new Scene(root);
    scene.setRoot(root);

    stage.setScene(scene);
    stage.show();
}

我尝试了将fxroot更改为Vbox的建议,但没有成功,我继续在编译程序上得到一个加载异常:

应用程序启动方法中出现异常...原因:javafx.fxml.loadException:Root尚未设置。在加载之前使用方法setRoot()。

scene.setRoot(root); 

我已经将问题缩小到我的FXML文件无法在父对象中设置为根,但在解决这一问题时没有运气。任何建议都是非常感谢的。

共有1个答案

袁耀
2023-03-14

为FXML文件指定“动态根”;这意味着FXML文件的根是在加载文件之前在加载器上设置的对象。这通常用于自定义控件,您希望控件是node的子类,可以使用常规Java代码实例化,但希望使用FXML定义其布局。标准文档中显示了 的正确使用(或者至少是如何使用它的示例)。特别是,如果使用 ,则必须:

  1. 创建FXMLLoader实例,而不是使用静态方便的FXMLLoader.Load(URL)方法
  2. 调用setRoot(...)然后传入作为FXML根的对象。

对于标准的FXML使用,只需使用常规实例声明作为根。几乎每一个可用的例子都是这样工作的:可能最好的开始是官方的教程。在您的示例中,由于需要vbox,您可能只需要

<VBox xmlns="javafx.com/javafx/8"; xmlns:fx="javafx.com/fxml/1"; fx:controller="divergex.DivergexGUIController">
<!-- ... -->
</VBox>
 类似资料:
  • 问题内容: 我是javaFx的新手,并且希望使用scenebuilder进行GUI开发,尽管遇到了类似的问题,但仍可能需要不同的观点,但我遇到了一个问题,尽管在网站或Web上搜索我的运气都不好。我试图在快速构建以测试功能后通过Netbeans加载FXML文件,以便代码简单,但是我无法在控制器中设置根文件。我的代码是以下公共类Divergex扩展的Application { 我尝试过将fxroot更

  • 我想在启动我的cucumber-jvm测试之前加载我所有的wiremck存根文件。 根据wiremock docs,通过API只能推送一个文件。不是散装的。我认为在启动测试之前,应该在测试项目中使用java代码。 通过代码实现这一点的最佳方式是什么。

  • 我正在尝试使用以下代码将我的fxml文件集成到我的项目中, 程序在第二行崩溃,引发此异常, 也试过了, 我不知道这是否相关,但这是我的iml文件, 是什么原因造成的?我该如何修复它? 这里是我的项目的一个拉链,如果有人想看一下。 谢谢, 亨利

  • 我昨天提出了一个类似的问题,但我认为它没有得到很好的解释,所以我想再问一遍,但我在代码中做了一些修改。如果我写得太多,我会道歉,但我想让一切都能理解。 这是我试图使其工作的代码(位于main controller中): getCantidad是我的bag控制器中的一个函数,它是: 所以当我尝试从主控制器运行这个函数时,它返回给我空指针异常。这意味着标签没有初始化,但当我键入第一个文件中的所有资源都

  • 本文向大家介绍根据配置文件加载js依赖模块,包括了根据配置文件加载js依赖模块的使用技巧和注意事项,需要的朋友参考一下 要求: 根据下面的配置文件 写一个函数 def getfiles(name) 返回 加载某个name指定的页面,要加载的js文件列表,有依赖的要先加载 小菜解法     此题粗看起来很简单,实则不然。      难点在于依赖模块的加载时机。假如有这样的依赖关系:A-B&C、B-C

  • 如何解决从文件加载ArrayList的问题? 完整代码在git上:项目github链接 当我从文件中加载数据时,我会把它拿回来- 我正在学习使用流,所以我正在将其写入文件。 程序结束后,我想在数组列表中写下用户到达的时间,并列出游戏完成的所有时间。