我正在尝试做一些看起来很简单但却变得非常困惑的事情,因为它似乎不起作用。
我正在使用Java 8,并尝试使用我创建的名为AgencyCodes的枚举中的值填充JavaFX ChoiceBox。我在stackOverflow上研究了这个问题,发现了这个: Populating JavaFX ComboBox or ChoiceBox from enum
当我试图模仿那篇文章中的两个解决方案时,无论是首选的还是另一个,我都会遇到编译错误,因为setItems()和setAll()期望一个String [],而不是本文中声明的ObservableList。文章是否完全错了?或者API在去年发生了变化?
我可以使用for循环来读取枚举中的值,然后将它们填充到String数组中,但这很繁琐,因为枚举似乎缺少任何确定枚举值的方法。至少我在API中没有看到任何内容。是否有一些简单的方法来获取枚举中的常量数量,还是必须用for循环计算它们?有没有更简单的方法将枚举中的值放入ChoiceBox?
我的枚举非常简单:
public enum AgencyCode {
TW ("TorontoWonder"),
CPA ("Canadian Pacific Airways"),
Elem ("Elementary");
private final String agencyName;
AgencyCode (String agencyName) {
this.agencyName = agencyName;
}
public String getAgencyName() {
return agencyName;
}
public static void main(String[] args) {
System.out.println("The code and full name of each agency are: ");
for (AgencyCode ac : AgencyCode.values()) {
System.out.println(ac + " - " + ac.getAgencyName() );
}
}
}
我必须将枚举内容放入ChoiceBox的代码是:
String[] agencyCodes = new String[3];
int ix = 0;
for (AgencyCode ac : AgencyCode.values()) {
System.out.println(ac + " - " + ac.getAgencyName());
agencyCodes[ix] = ac.toString();
ix++;
}
ChoiceBox<String> ticketAgency = new ChoiceBox<String>();
ticketAgency.getItems().setAll(agencyCodes);
//ticketAgency.setItems(FXCollections.observableArrayList(AgencyCode.values()));
grid.add(ticketAgency, 1, 3);
您可以在这一点上给予我任何指导,我们将不胜感激。我无法相信我需要采用这种技术来简单地填充ChoiceBox。