簡體   English   中英

從枚舉填充 JavaFX ComboBox 或 ChoiceBox

[英]Populating JavaFX ComboBox or ChoiceBox from enum

有沒有辦法用 enum 的所有枚舉填充 JavaFX ComboBoxChoiceBox

這是我嘗試過的:

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

但我收到一個錯誤: incompatible types: Status[] cannot be converted to ObservableList<Status>

我顯然在使用ChoiceBox遇到了同樣的問題。

如果 setItems 需要一個 ObservableList,那么你必須給它一個而不是一個數組。

嘗試這個:

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

編輯:James_D(見評論)的解決方案是首選:

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

我為此使用了 FXML。 我的枚舉有一個構造函數

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM