如何获得对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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何在JavaFX中理解和使用`<fx:root>`?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何通过他的ID获取节点

来自分类Dev

如何通过ID查看xml节点?

来自分类Dev

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

来自分类Dev

如何在 GridPane 中引用特定节点

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何获得对ViewPager中片段视图的引用?

来自分类Dev

如何通过ID或索引号引用列

来自分类Dev

如何通过ID或索引号引用列

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

    如何在JavaFX中理解和使用`<fx:root>`?

  17. 17

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

  18. 18

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

  19. 19

    如何通过他的ID获取节点

  20. 20

    如何通过ID查看xml节点?

  21. 21

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

  22. 22

    如何在 GridPane 中引用特定节点

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

    如何获得对ViewPager中片段视图的引用?

  28. 28

    如何通过ID或索引号引用列

  29. 29

    如何通过ID或索引号引用列

热门标签

归档