【发布时间】:2018-03-20 15:28:15
【问题描述】:
我有两个组合框:
final ComboBox<MainCategory> comboBoxMainCategory = new ComboBox<>();
final ComboBox<SubCategory> comboBoxSubCategory = new ComboBox<>();
根据在 comboBoxMainCategory 中选择的值,comboBoxSubCategory 应填充相应的枚举。
public enum MainCategory { // extra enum class
EUROPE("Europe"),
USA("USA");
}
public enum SubCategoryEurope { // extra enum class
GERMANY("Germany"),
FRANCE("France");
}
public enum SubCategoryUSA {
COLORADO("Colorado"),
CALIFORNIA("California");
}
如果为 comboBoxMainCategory 选择了“Europe”,comboBoxSubCategory 应填充 SubCategoryEurope。如果是“美国”,则使用 SubCategoryUSA。
您是如何做到这一点的?
这是我的代码:
final ComboBox<MainCategory> comboBoxMainCategory = new ComboBox<();
final ComboBox<SubCategory> comboBoxSubCategory = new ComboBox<>();
comboBoxMainCategory.valueProperty().addListener((obs, oldValue,
newValue) ->
{
if (newValue == null) { // newValue: Europe || USA
comboBoxSubCategory.getItems().clear();
comboBoxSubCategory.setDisable(true);
} else if (newValue.equals(MainCategory.EUROPE)) {
comboBoxSubCategory.setItems(FXCollections.observableArrayList(SubCategoryEurope.values()));
comboBoxSubCategory.setDisable(false);
} else {
comboBoxSubCategory.setItems(FXCollections.observableArrayList(SubCategoryUSA.values()));
comboBoxSubCategory.setDisable(false);}
});
问题是,因为 comboBoxSubCategory 是“SubCategory”,如果填充 'SubCategoryEurope' 或 'SubCategoryUSA' 会出现类型错误。
解决此问题的最佳方法是什么?对不起,如果这是一个愚蠢的问题,我是 JavaFx 的新手。
非常感谢!
【问题讨论】:
-
欧洲/美国和佛罗里达/法国属于同一(子)类别?你需要清理你的逻辑
标签: java javafx enums combobox