Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Populating JavaFX ComboBox or ChoiceBox from enum

Tags:

Is there a way to populate a JavaFX ComboBox or ChoiceBox with all enumerations of a enum ?

Here is what I tried :

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

In a another class, I'm trying to populate a ComboBox :

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

But I get an error : incompatible types: Status[] cannot be converted to ObservableList<Status>

I obviously get the same problem with a ChoiceBox.

like image 948
Jérôme Avatar asked Jan 06 '15 14:01

Jérôme


1 Answers

If setItems requires an ObservableList, then you have to give it one instead of an array.

Try this:

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

Edit: The solution of James_D (see comment) is the preferred one:

cbxStatus.getItems().setAll(Status.values()); 
like image 131
Roland Avatar answered Oct 06 '22 00:10

Roland