我有三个组合框:国家,州和城市
我如何成为另一个人的依赖?例如,如果我选择巴西出现他们的州和后来选定州的城市。但如果我在该国选择美国将显示他们的州
我使用MySQL作为数据库,如果你需要在数据库中进行一些配置,请告诉我......这是你第一次使用它时,非常感谢你。
答案 0 :(得分:3)
使用国家/地区组合框注册侦听器,并在所选项目更改时更新状态组合框:
cbxCountry.valueProperty().addListener((obs, oldValue, newValue) -> {
if (newValue == null) {
cbxState.getItems().clear();
cbxState.setDisable(true);
} else {
// sample code, adapt as needed:
List<State> states = stateDAO.getStatesForCountry(newValue);
cbxState.getItems().setAll(states);
cbxState.setDisable(false);
}
});
如果您愿意,也可以使用绑定执行此操作:
cbxState.itemsProperty().bind(Bindings.createObjectBinding(() -> {
Country country = cbxCountry.getValue();
if (country == null) {
return FXCollections.observableArrayList();
} else {
List<State> states = stateDAO.getStatesForCountry(country);
return FXCollections.observableArrayList(states);
}
},
cbxCountry.valueProperty());
(如果您希望上述解决方案中的禁用功能也执行cbxState.disableProperty().bind(cbxCountry.valueProperty().isNull());
)。