如何从枚举中填充ChoiceBox?

时间:2016-03-20 02:38:53

标签: javafx enums

我正在尝试做一些看起来很简单但却变得非常困惑的事情,因为它似乎不起作用。

我正在使用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。

0 个答案:

没有答案