当前位置: 首页 > 面试题库 >

JavaFx FXML加载文件设置根问题

郝原
2023-03-14
问题内容

我是javaFx的新手,并且希望使用scenebuilder进行GUI开发,尽管遇到了类似的问题,但仍可能需要不同的观点,但我遇到了一个问题,尽管在网站或Web上搜索我的运气都不好。我试图在快速构建以测试功能后通过Netbeans加载FXML文件,以便代码简单,但是我无法在控制器中设置根文件。我的代码是以下公共类Divergex扩展的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的建议,但是没有运气,我继续在编译时遇到Load异常:

应用程序启动方法中的异常…原因:javafx.fxml.LoadException:尚未设置根。加载前使用方法setRoot()。

但是当我使用

scene.setRoot(root);

遇到同样的例外

我已将问题缩小到以下事实:我的FXML文件无法设置为Parent对象的根目录,但是没有运气来解决这个问题。任何建议将非常感谢。


问题答案:

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

  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>

编辑
如果Netbeans给您带来问题,建议您将Eclipse与e(fx)clipse插件一起使用。有一个非常准系统的东西,但是您几乎需要的所有东西,tutorial。



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

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

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

  • 我查看了过去的堆栈跟踪,我有所有正确的设置。我认为这更多的是配置文件的问题。 我没有使用git作为数据源,而是使用S3,但它可以工作,当我运行时在我的本地 http://localhost:8086/application/default 它返回 在我的pom上,我已经准备好了春靴 Spring的云是 春云已设置 设置启动器配置 在我设置的客户端的应用程序yml中 @actiatedPropert

  • 问题内容: 我是Java的新手,我不确定如何从单独的程序jar中访问位于特定目录中的类文件。 例如,我在/中有一个第三方jar文件,该文件应该加载/mylib/MyClass.class中的MyClass,因此我尝试运行: 但我得到了错误: 我究竟做错了什么? 问题答案: 当您使用,然后 只 在中定义的属性文件里面的文件会影响到类路径。 它还将忽略该参数(或更具体地说:将其解释为)中定义的主类的参

  • 我试图获取和下载文件从服务器本地文件夹到客户端。但当我尝试下载时(也是下载操作成功),下载文件的名称被自动设置为动作名称。如何更改下载的文件名? MyController: 客户端(查看脚本): 当我点击下载操作是okey,但下载的文件名是MyActionDownload.docx,我想更改文件名。