java - 在 JavaFX 中使用枚举类填充组合框?

标签 java javafx combobox enums

我一直在寻找解决我的问题的方法,但找不到直接适用于我的情况的解决方案。本质上,我有一些单独的枚举类,我想将它们的字符串值存储在组合框中供用户选择,但是仅使用 ComboBox.getItems().setAll(Enum.values()); 不会填充列表。

我的代码如下,所有代码都在我的 github 上,以减少本文的困惑。我还将附上我的 GUI 的屏幕截图以及我如何在 JavaFX 中分配它,也许这就是问题所在。预先感谢您!

git:https://github.com/jparr721/Blue-Box2/tree/master/src/blueBox/GUI

Controller 类代码:

public class RentGameDialogController extends RentalStoreGUIController implements Initializable{

    @FXML private TextField nameField, rentedOn, dueBack;
    String name;
    Date dateRentedOn, dateDue;
    GregorianCalendar rented, due;
    @FXML ComboBox<GameType> cbGame;
    @FXML ComboBox<PlayerType> cbConsole;
    @FXML Button cancel, addToCart;
    @FXML int counter = 0;
    private Stage currentStage;


    @Override
    public void initialize(URL location, ResourceBundle resources) {

        rentedOn = new TextField();
        dueBack = new TextField();

        cbGame = new ComboBox<>();
    }

    @FXML
    public void handleGameComboBox() {
        cbGame.getItems().setAll(GameType.values());
    }

枚举类代码:

public enum GameType {
    THE_WITCHER("The Witcher 3"),
    CALL_OF_DUTY_AW("Call of Duty: Advanced Warfare"),
    CALL_DUTY_BLOP3("Call of Duty: Black Ops 3"),
    CALL_OF_DUTY_IW("Call of Duty: Infinite Warfare"),
    THE_ELDER_SCROLLS("The Elder Scrolls IV: Skyrim");

    private String game;

    GameType(String game) {
        this.game = game;
    }

    public String GameType() { return game; }

    @Override public String toString() { return game; }

}

图片: /image/chTYt.png

最佳答案

首先,永远不要初始化由 @FXML 注入(inject)的字段。因此,请删除 initialize() 方法中当前的所有代码。

ObservableList 定义了一个采用可变参数或数组参数的 addAll(...) 方法。所以你所需要的只是

@Override
public void initialize(URL location, ResourceBundle resources) {

    cbGame.getItems().addAll(GameType.values());
}

关于java - 在 JavaFX 中使用枚举类填充组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620286/

相关文章:

java - 如何在 Google Cloud Storage 中获取项目 ID

c++ - 如何处理 win32 winapi 中无效绘制的 ComboBox 控件?

javascript - 如果 ComboBox 值那么单选按钮可见 JavaScript

java - 使用 openSession() 而不是 getCurrentSession() - 何时以及为什么?

java - 从通用类创建新的特定对象

java - 在 Blackboard Building Block 中使用 jQuery

Javafx:通过CSS从外部jar加载图像

JavaFX - 注册成功的反馈

java - Maven 包括 JavaFX 对我当前运行的操作系统的依赖,即使我对其他操作系统进行分类

c# - WPF - 更改组合框中枚举的字符串值