从枚举中填充JavaFX ComboBox或ChoiceBox

有没有办法用枚举的所有枚举填充JavaFX ComboBox或ChoiceBox?

这是我尝试过的:

public class Test {

    public enum Status {
        ENABLED("enabled"),
        DISABLED("disabled"),
        UNDEFINED("undefined");

        private String label;

        Status(String label) {
            this.label = label;
        }

        public String toString() {
            return label;
        }
    }
}

在另一个类中,我正在尝试填充ComboBox:

    ComboBox<Test.Status> cbxStatus = new ComboBox<>();
    cbxStatus.setItems(Test.Status.values());

但是我收到一个错误:不兼容的类型:Status []无法转换为ObservableList< Status>

我显然对ChoiceBox有同样的问题.

解决方法:

如果setItems需要一个ObservableList,那么你必须给它一个而不是一个数组.

尝试这个:

ComboBox<Status> cbxStatus = new ComboBox<>();
cbxStatus.setItems( FXCollections.observableArrayList( Status.values()));

编辑:James_D的解决方案(见评论)是首选的解决方案:

cbxStatus.getItems().setAll(Status.values());
上一篇:c – 如何使用QML模型?


下一篇:Java阻止来自JComponent的焦点