组合框依赖于另一个组合框 - JavaFX
Posted
技术标签:
【中文标题】组合框依赖于另一个组合框 - JavaFX【英文标题】:combobox dependent on another combobox - JavaFX 【发布时间】:2017-02-19 07:52:33 【问题描述】:我有三个组合框:国家、州和城市
我怎样才能成为依赖他人的人?例如,如果我选择巴西,则会出现他们的州,然后是所选州的城市。但是如果我在该国选择美国会显示他们的州
我是用mysql做数据库的,如果你需要在数据库中做一些配置也告诉我……你是第一次使用它,非常感谢。
【问题讨论】:
Obs:我如何填充组合框的示例 public void country() listCountry = countryDAO.show(); observableListCountry = FXCollections.observableArrayList(listCountry); cbxCountry.setItems(observableList); 请不要在 cmets 中发布代码:edit 您的问题并添加到那里。 【参考方案1】:向国家组合框注册一个监听器,并在所选项目发生变化时更新状态组合框:
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());
)。
【讨论】:
以上是关于组合框依赖于另一个组合框 - JavaFX的主要内容,如果未能解决你的问题,请参考以下文章
想要一个列表框显示1-10,但是下拉中显示的内容依赖于另一个列表项