java combobox enums javafx

Poblando JavaFX ComboBox o ChoiceBox de enum



enums (2)

Si setItems requiere una ObservableList, entonces debe darle una en lugar de una matriz.

Prueba esto:

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

Editar: La solución de James_D (ver comentario) es la preferida:

cbxStatus.getItems().setAll(Status.values());

¿Hay alguna manera de poblar un ComboBox o un ChoiceBox JavaFX con todas las enumeraciones de una enumeración?

Esto es lo que intenté:

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; } } }

En otra clase, intento llenar un ComboBox :

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

Pero me aparece un error: incompatible types: Status[] cannot be converted to ObservableList<Status>

Obviamente tengo el mismo problema con un ChoiceBox .


Usé FXML para esto. Mi enum tiene un constructor

<ComboBox GridPane.rowIndex="0" GridPane.columnIndex="1"> <items> <FXCollections fx:factory="observableArrayList"> <Type fx:value="ABC"/> <Type fx:value="DEF"/> <Type fx:value="GHI"/> </FXCollections> </items> </ComboBox>

public enum Type { ABC("abc"),DEF("def"),GHI("ghi"); private String name; private Type(String theType) { this.name = theType; } }