在 Scene Builder 中注入 Arraylist 的元素

Injecting an element of an Arraylist in Scene Builder

我有一个长度为动态的数组列表,其中包含几个标签,例如

在控制器中class我已经声明

@FXML private ArrayList<Label> a; 

控制器内初始化class...

@Override
public void initialize(URL url, ResourceBundle rb) {
        b.add(new Label("label 1"));
        b.add(new Label("label 2"));
        b.add(new Label("label 3")); //etc...
}

我是否有机会通过 fx:id 在 Scene Builder 中注入 a 的每个元素? a.get(0) 而不是...

您可以反过来,即在 FXML 中声明一个 Label 的 ObservableList,然后将每个元素注入控制器。

<FXCollections fx:factory="observableArrayList">
    <Label fx:id="light" text="Light" />
    <Label fx:id="dark" text="Dark" />
</FXCollections>

在控制器中:

public class YourControllerName implements Initializable {

    ...

    @FXML
    private Label light;

    @FXML
    private Label dark;

    ...
}