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

Javafx FXMLLoader类

端木存
2023-03-14
FXMLLoader load = new FXMLLoader(getClass.getResource("sample.fxml"));

所以我知道我正在创建一个FXMLLoader的对象,那么实际上是怎么回事呢?我只是想知道当我使用FXMLLoader加载我的.fxml代码时会发生什么情况...它是否像不使用javafx或CSS的基本方式那样创建了一个不使用.fxml的类?或者此FXMLLoader返回根节点及其子节点。总之,我想知道这个FXMLLoader是如何工作的。

共有1个答案

东门晨
2023-03-14
FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));

与任何其他类似的Java代码一样,它创建FXMLLoader类的一个实例。您还将其location属性设置为您指定的URL(基本上表示与您所在的类位于同一包中的sample.fxml资源)。这不会加载或读取FXML文件,直到您调用

loader.load();

当您调用它时,它读取并解析FXML文件,并创建一个与FXML中的元素相对应的对象层次结构。如果FXML指定了一个控制器,它会将具有fx:id属性的任何元素注入到与该属性同名的控制器中的@FXML注释字段中。完成后,它调用控制器的initialize()方法(如果有的话),最后返回与FXML文件的根元素相对应的对象。此对象还设置为root属性,因此以下代码是相同的:

loader.load();
Parent root = loader.getRoot();

而且

Parent root = loader.load();
<BorderPane fx:controller="example.Controller">
  <top>
    <Label fx:id="header"/>
  </top>
  <bottom>
    <HBox>
      <children>
        <Button text="OK" fx:id="okButton" />
        <Button text="Cancel" fx:id="cancelButton" />
      </children>
    </HBox>
  </bottom>
</BorderPane>
Parent root = loader.load();
public class FXMLLoader {

    // not a real method, but functionally equivalent to the load()
    // method for the example FXML above:
    public BorderPane load() {

        example.Controller controller = new example.Controller();
        this.controller = controller ;

        BorderPane borderPane = new BorderPane();
        this.root = borderPane ;

        Label header = new Label();
        controller.header = header ;
        borderPane.setTop(header);

        HBox hbox = new HBox();
        Button okButton = new Button();
        okButton.setText("OK");
        controller.okButton = okButton ;
        hbox.getChildren().add(okButton);

        Button cancelButton = new Button();
        cancelButton.setText("Cancel");
        controller.cancelButton = cancelButton ;
        hbox.getChildren().add(cancelButton);

        borderPane.setBottom(hbox);

        controller.initialize();

        return borderPane ;

    }
}
 类似资料:
  • 本文向大家介绍请说说你熟悉的三个垂直社区或金融类 APP,并简述其典型用户画像。相关面试题,主要包含被问及请说说你熟悉的三个垂直社区或金融类 APP,并简述其典型用户画像。时的应答技巧和注意事项,需要的朋友参考一下 掌上生活、浦大喜奔、买单吧 金融类app用户首先是持有银行卡和智能手机的消费能力中上的人群。其次,因为金融类app多数被用于生活消费、查询账单、理财等功能,可以将其画像定义为:对理财和

  • 问题内容: 我是一个初学者,正在学习spring和hibernate(在项目中使用Maven),遇到了这个问题,被困在这里。试图找到解决方案,但最终无处可寻。请帮忙。非常感谢 错误:“找不到“http://java.sun.com/jsp/jstl/core ”的标记库描述符 码: 尝试了在Java构建路径中找不到超类“javax.servlet.http.HttpServlet”中给出的解决方案

  • 问题内容: 我在jsp页面中看到以下错误- 我看到了一篇关于此的文章,并尝试了一些建议的方法。BalusC提供了很好的输入- JSTL1.2和Standard.jar不能一起使用。我做到了,它解决了一段时间的问题- 但它再次出现。我不确定是否还有jar碰撞。我已经将所有jar定义为Maven中的依赖项。以下是我指定的依赖项pom.xml- 问题答案: 您将需要在项目中导入JSP API,而Serv

  • 问题内容: 我是使用库的新手,但是我需要能够向忘记密码的用户发送电子邮件。我正在尝试使用JavaMail和Apache Commons Email来实现这一点。但是,我认为我一定是错误地导入了库。 当我尝试发送电子邮件时,收到以下消息: 编码: 堆栈跟踪: 我已经尝试了几件事: 将包含所有.java文件的org.apache.commons.mail文件夹复制到我的netbeans项目的源文件中,

  • 问题内容: 您能否澄清一下,为什么在我们将 final 关键字设为不变时,为什么 在上课之前需要 final 关键字。我的意思是,如果我们将所有属性声明为私有和最终的,那么它也是一个不可变的类,不是吗? 很抱歉,这个问题似乎很简单,但是我对此感到非常困惑。帮帮我。 编辑:我知道一个声明为final的类不能被子类化。但是如果每个属性都是私有和final的,那有什么区别呢? 问题答案: 正如堆纸器所说

  • 问题内容: 我有一个蚀项目结构看起来像这样: 所有这些项目都是Maven项目。项目B是Eclipse WTP项目,包含项目A作为依赖项。我正在使用m2eclipse插件。 当我将项目B部署到Tomcat(全部从Eclipse中进行)时,总是会抛出错误,提示它无法从项目A中找到类。解决此问题的唯一方法是在Eclipse中 关闭 项目A并执行 mvn install 命令,因此,在这一点上,项目A就像

  • 问题内容: 假设我有一个包含许多公共方法的类: 现在,我想创建一个 包装器 类,该 包装器 类将所有方法委托给包装好的实例( 委托 ): 现在,如果MyClass有很多方法,我将需要重写它们中的每一个,这些方法或多或少与只是“委托”的代码相同。我想知道是否可以做一些魔术来自动调用Java中的方法(因此Wrapper类需要说“嘿,如果您对我调用方法,只需去 委托 对象并对其调用此方法)。 顺便说一句

  • 问题内容: 我的应用程序显示了许多自定义对话框,例如“是/否”或“接受/取消决定”,并且在编写代码时,我意识到遵循相同的模式重复了太多代码。 我想建立一个通用类,但我不知道该怎么做,或更确切地说,我不知道该怎么做(接口,抽象类,继承,静态类等)。 这是我目前的课程: } 这就是我需要使用此类时要做的事情: 我敢肯定它是可改进的,但是您怎么能做到呢? 谢谢 问题答案: 首先创建一个Base 来保持的