【问题标题】:javafx Intellij IDEA index user controljavafx Intellij IDEA 索引用户控件
【发布时间】:2020-05-14 18:53:00
【问题描述】:

当我在 fxml 文件中使用 fx:controller 时一切正常,但如果是用户控制(fx:root 顶部标签),我不能使用 fx:controller。 因此,Intellij 停止索引文件,并在控制器文件中收到警告,因为未分配变量。

<fx:root prefHeight="500.0" prefWidth="710.0" type="VBox" xmlns="http://javafx.com/javafx/8.0.171"
         xmlns:fx="http://javafx.com/fxml/1">
    <FlowPane fx:id="flow" columnHalignment="CENTER" hgap="25.0" vgap="25.0"/>
</fx:root>

如何在不使用fx:controller 的情况下指定用于索引的控制器文件?

【问题讨论】:

  • 您好,您能否提供您遇到问题的示例项目或控制器的完整代码和 fxml 文件。谢谢
  • @OlgaKlisho 问题中有元素代码。 FXML 和 JAVA 文件命名相同

标签: java intellij-idea javafx


【解决方案1】:

我找到了解决办法,首先我还是放了fx:controller属性,但是

public CustomControl() {
    try {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("CustomControl.fxml"));
        loader.setRoot(this);
        loader.setController(this);
        loader.load();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

我用

public CustomControl() {
    try {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("CustomControl.fxml"));
        loader.setRoot(this);
        loader.setControllerFactory(theClass -> this);
        loader.load();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

我只是将FXMLLoader#setController 替换为FXMLLoader#setControllerFactory,现在加载器成功加载了我的自定义控件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 2016-06-13
    • 1970-01-01
    • 2023-03-05
    • 2017-09-19
    • 2019-04-25
    • 2015-04-29
    • 2014-10-22
    相关资源
    最近更新 更多