[英]Populating JavaFX ComboBox or ChoiceBox from enum
有沒有辦法用 enum 的所有枚舉填充 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());
但我收到一個錯誤: 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.