有没有办法用枚举的所有枚举填充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());