我一直在寻找解决我的问题的方法,但找不到直接适用于我的情况的解决方案。本质上,我有一些单独的枚举类,我想将它们的字符串值存储在组合框中供用户选择,但是仅使用 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/