加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

设置root的JavaFx FXML加载文件问题

发布时间:2020-12-14 00:53:53 所属栏目:Linux 来源:网络整理
导读:作为 javaFx的新手,并且想要使用场景构建器进行GUI开发,我遇到了一个问题,没有运气搜索网站或一般网络我的问题,虽然已经提出了类似的问题,认为可能需要不同的视角.我试图在快速构建之后通过Netbeans加载F XML文件以测试功能,因此代码很简单,但我无法在控制器
作为 javaFx的新手,并且想要使用场景构建器进行GUI开发,我遇到了一个问题,没有运气搜索网站或一般网络我的问题,虽然已经提出了类似的问题,认为可能需要不同的视角.我试图在快速构建之后通过Netbeans加载F XML文件以测试功能,因此代码很简单,但我无法在控制器中设置根文件.我的代码如下
????公共类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异常:

Exception in Application start method…
Caused by: javafx.fxml.LoadException: Root hasn’t been set. Use method setRoot() before load.

但是当我使用的时候

scene.setRoot(root);

经历了同样的例外

我已经将问题缩小到这样一个事实,即我的FXML文件无法在Parent对象中设置为root,但却无法解决这个问题.任何建议都会非常感谢.

解决方法

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

>创建FXMLLoader实例,而不是使用静态方便FXMLLoader.load(URL)方法
>在该实例上调用setRoot(…),并传入将成为FXML根的对象.

对于标准FXML使用,您只需使用常规实例声明作为根.几乎每个可用的例子都是这样的:可能最好的起点是official tutorial.在你的情况下,因为你想要一个VBox,你可能只需要

<VBox xmlns="javafx.com/javafx/8"; xmlns:fx="javafx.com/fxml/1"; fx:controller="divergex.DivergexGUIController">
<!-- ... -->
</VBox>

编辑如果Netbeans给你带来问题,我建议将Eclipse与e(fx)clipse plugin一起使用.有一个非常准确的,但几乎所有你需要的,tutorial.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读