小编Dmi*_*rev的帖子

将自定义 FXML 属性设置为自定义 javafx 组件的参数

我创建了自定义组件 TableBlock。它由一个 Label 和一个 TableView 组成。例如,TableView 可以有 1 到 1000 行。行数由 FXML 文件中的参数“rowsFromPrefs”定义。创建 TableView 需要此参数。TableView 完全由 JAva 代码创建,在 fxml 中只是它的标签和带有多行的参数。

据我所知,当 JavaFX 构造 FXML 组件时,它首先调用构造函数,然后调用 @FXML 注释字段,然后启动 initialize() 方法。

在我的情况下,当 initialize() 启动时,变量 rowsFromPrefs 仍然为空!但是,如果我尝试从其他线程(不是 JavaFX 启动器)获取 rowsFromPrefs 的值,我会看到它定义为“2”,就像它应该的那样。

所以我无法理解 Java 在什么时候从 FXML 文件分配对象参数。创建时如何将参数从 fxml 文件传递​​给对象。

我看到了构造函数参数的 @NamedArg 注释。它是创建对象时传递参数的唯一方法吗?

控制器可以定义一个 initialize() 方法,当相关文档的内容已经完全加载时,该方法将在一个实现控制器上调用一次:

表块.java

public class TableBlock extends VBox{
    @FXML
    private String rowsFromPrefs;
    @FXML
    private Label label;

public TableBlock() {
    FXMLLoader fxmlLoader = new   FXMLLoader(getClass().getResource("TableBlock.fxml"));
    fxmlLoader.setRoot(this);
    fxmlLoader.setController(this);
    try {
        fxmlLoader.load();
    } catch …
Run Code Online (Sandbox Code Playgroud)

java javafx fxml

4
推荐指数
1
解决办法
5243
查看次数

标签 统计

fxml ×1

java ×1

javafx ×1