【问题标题】:Injecting an element of an Arraylist in Scene Builder在 Scene Builder 中注入 Arraylist 的元素
【发布时间】:2015-05-29 00:46:44
【问题描述】:

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

在我声明的控制器类中

@FXML private ArrayList<Label> a; 

在控制器类中初始化...

@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) 而不是 a...

【问题讨论】:

    标签: arraylist javafx-8 inject scenebuilder


    【解决方案1】:

    你可以做相反的事情,即在 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;
    
        ...
    }
    

    【讨论】:

    • 好主意!但正如我在帖子中提到的,我的数组列表的长度是动态的。在某些情况下,我有 3 个元素,在某些情况下有 25 个元素。我怎样才能以动态方式做到这一点?
    • 在FXML中没有办法,可以通过Creating dynamic amount of components in FXML
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多