Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

java - Populating JavaFX ComboBox or ChoiceBox from enum

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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());

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...