gpt4 book ai didi

java - 将项目添加到 ChoiceBox

转载 作者:行者123 更新时间:2023-11-30 09:21:05 26 4
gpt4 key购买 nike

DataConstantsNames 类中我有:

public static final ObservableList<Object> IMPORTVARIABLES = FXCollections.observableArrayList(DATE, TIME, new Separator(),OPEN, HIGH, LOW, CLOSE, new Separator(),VOLUME);

我想将这些变量添加到我有 7 个选择框的类 Controller 中的选择框:

ChoiceBox[] columnName = {choiceboxColumn1, choiceboxColumn2, choiceboxColumn3, choiceboxColumn4, choiceboxColumn5, choiceboxColumn6, choiceboxColumn7};

我的问题:如果我做一个 for 循环,例如:

for (int i = 0; i < columnName.length; i++) {
columnName[i].setItems(DataConstantsName.IMPORTVARIABLES);
}

一切都很好,但如果我尝试将项目设置为单个选择框,我会收到此错误:

enter image description here

我哪里错了?

最佳答案

我不知道为什么 SB 使用通配符 ( <?> ) 生成您的 ChoiceBox,但您不能在没有类型说明的情况下在通配符列表中设置项目。

参见 http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html了解更多详情。

要使您的代码可编译,请从 ChoiceBoxes 中删除通配符:

@FXML private ChoiceBox choiceboxColumn1;

或将变量转换为特定类型:

((ChoiceBox)choiceboxColumn1).setItems(IMPORTVARIABLES);

((ChoiceBox<Object>)choiceboxColumn1).setItems(IMPORTVARIABLES);

附注: for循环对你有用,因为你把 choiceboxColumn1进入普通数组 ChoiceBox .通过这个你告诉编译器忽略所有泛型并使用旧的 java 1.4 样式的变量。

您可以使用直接集来实现:

ChoiceBox cb = choiceboxColumn1;
cb.setItems(IMPORTVARIABLES);

由于 Java 类型删除概念,您可以做到这一点:http://docs.oracle.com/javase/tutorial/java/generics/erasure.html

关于java - 将项目添加到 ChoiceBox<?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17145392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com