如何获得对javafx中通过fx:id描述的节点的引用?

斯普拉

我有一个简化的问题示例,其中调用fx:idfrom的代码引用不是null,initialize而是在函数调用之后立即变为null。获得此类参考的正确方法是什么?这是sample.fxml

<GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="sample.Main">
   <columnConstraints>
      <ColumnConstraints />
   </columnConstraints>
   <rowConstraints>
      <RowConstraints />
   </rowConstraints>
   <children>
      <Text fx:id="textRef" strokeType="OUTSIDE" strokeWidth="0.0" text="Hello world" />
   </children>
</GridPane>

这就是Main.java被宣布为它的控制器。

public class Main extends Application implements Initializable{
    @FXML
    public Text textRef;

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();

        this.someNewFunction();
    }

    private void someNewFunction() {
        this.textRef.setText("Changed in somNewFunction");
    }


    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        this.textRef.setText("Changed at initialize");
    }
}

文本ref在initialize调用内有效,但在内时抛出nullpointerexception someNewFunction

法比安

Main时启动实例是一个不同的对象比Main由创建的实例FXMLLoader被用作控制器。

恕我直言,最好是FXMLLoader在加载fxml之后从控制器中获取控制器,并且还使用与Applicationas控制器不同的类

public class MainController implements Initializable {

    ...   

}
<GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="sample.MainController">
   ...
</GridPane>
@Override
public void start(Stage primaryStage) throws Exception {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
    Parent root = loader.load();
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();

    MainController controller = loader.getController();

    controller.someNewFunction();
}

但是,您也可以指定应与fxml一起使用的控制器:

<GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
   ...
</GridPane>
@Override
public void start(Stage primaryStage) throws Exception {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
    loader.setController(this);
    Parent root = loader.load();
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();

    this.someNewFunction();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

我如何知道JavaFX中关注的节点?

来自分类Java

如何在JavaFX中获得父节点中的所有节点?

来自分类Java

JavaFX中的fx:id和id:有什么区别?

来自分类Java

如何在JavaFX中设置-fx图形大小?

来自分类Dev

如何通过节点ID获得真正的元素?反应性的

来自分类Dev

通过整数ID引用图节点

来自分类Dev

如何通过引用子节点将节点从Firebase中删除?

来自分类Dev

在此示例中如何设置对节点的引用

来自分类Dev

在C中通过引用返回并传递文件描述符

来自分类Dev

如何仅通过ID获得更多信息

来自分类Dev

当子节点是点击事件目标时,如何在React中获得div包装器的ID?

来自分类Dev

如何获得重分支中的子节点?

来自分类Dev

如何获得对在jersey中调用的方法的引用

来自分类Dev

如何通过ID查看xml节点?

来自分类Dev

我如何获得在python中实现描述符对象的所有类的引用

来自分类Dev

如何在JavaFX中获得节点的绝对旋转

来自分类Dev

如何在Python中获得列表的引用

来自分类Dev

如何通过按ID注册但在任何DOM节点中未引用的方式删除dojo小部件

来自分类Dev

如何通过biopython从gi号获得序列描述?

来自分类Dev

如何使用FX:ID JavaFx查看网页

来自分类Dev

通过Rails中的ID获得热门记录

来自分类Dev

如何使用GridPane的fx:id通过controller.java文件将按钮添加到JavaFX gui

来自分类Dev

我如何通过HTML中的ID获得价值

来自分类Dev

从 MainApp 如何在 JavaFX 中的另一个控制器中的 fx:id 中显示内容

来自分类Dev

如何在 GridPane 中引用特定节点

来自分类Dev

一旦通过 FXML 加载了一个节点,如何检索所有具有 fx:id 的项目?

来自分类Dev

如何通过 DFS 遍历获得边权重和节点节点

来自分类Dev

如何在单个描述中获得多个键?

来自分类Dev

如何在图例描述中引用其他容器?

Related 相关文章

  1. 1

    我如何知道JavaFX中关注的节点?

  2. 2

    如何在JavaFX中获得父节点中的所有节点?

  3. 3

    JavaFX中的fx:id和id:有什么区别?

  4. 4

    如何在JavaFX中设置-fx图形大小?

  5. 5

    如何通过节点ID获得真正的元素?反应性的

  6. 6

    通过整数ID引用图节点

  7. 7

    如何通过引用子节点将节点从Firebase中删除?

  8. 8

    在此示例中如何设置对节点的引用

  9. 9

    在C中通过引用返回并传递文件描述符

  10. 10

    如何仅通过ID获得更多信息

  11. 11

    当子节点是点击事件目标时,如何在React中获得div包装器的ID?

  12. 12

    如何获得重分支中的子节点?

  13. 13

    如何获得对在jersey中调用的方法的引用

  14. 14

    如何通过ID查看xml节点?

  15. 15

    我如何获得在python中实现描述符对象的所有类的引用

  16. 16

    如何在JavaFX中获得节点的绝对旋转

  17. 17

    如何在Python中获得列表的引用

  18. 18

    如何通过按ID注册但在任何DOM节点中未引用的方式删除dojo小部件

  19. 19

    如何通过biopython从gi号获得序列描述?

  20. 20

    如何使用FX:ID JavaFx查看网页

  21. 21

    通过Rails中的ID获得热门记录

  22. 22

    如何使用GridPane的fx:id通过controller.java文件将按钮添加到JavaFX gui

  23. 23

    我如何通过HTML中的ID获得价值

  24. 24

    从 MainApp 如何在 JavaFX 中的另一个控制器中的 fx:id 中显示内容

  25. 25

    如何在 GridPane 中引用特定节点

  26. 26

    一旦通过 FXML 加载了一个节点,如何检索所有具有 fx:id 的项目?

  27. 27

    如何通过 DFS 遍历获得边权重和节点节点

  28. 28

    如何在单个描述中获得多个键?

  29. 29

    如何在图例描述中引用其他容器?

热门标签

归档