如何创建使用另一个ComboBox中的值的ComboBox? JavaFX

时间:2019-06-05 08:51:28

标签: java javafx combobox

我有两个组合框:fruitsdrinks

fruits具有以下字符串:"apple", "orange", "banana"

drinks具有以下字符串:"water", "coffee", "juice"

如何制作具有用户为fruits组合框和drinks组合框选择的值的组合框?

例如:如果用户选择applewater,则新的ComboBox应包含applewater作为选项。

1 个答案:

答案 0 :(得分:0)

使用侦听器访问前两个value的{​​{1}}属性,并从中更新第三个{}的项:

ComboBox

请注意,这不会阻止在两个@Override public void start(Stage primaryStage) { ComboBox<String> c1 = new ComboBox<>(); c1.getItems().addAll("apple", "orange", "banana"); ComboBox<String> c2 = new ComboBox<>(); c2.getItems().addAll("water", "coffee", "juice"); ComboBox<String> c3 = new ComboBox<>(); ChangeListener<String> listener = (o, oldValue, newValue) -> { final List<String> items = c3.getItems(); int index = items.indexOf(oldValue); if (index >= 0) { if (newValue == null) { items.remove(index); } else { items.set(index, newValue); } } else if (newValue != null) { items.add(newValue); } }; c1.valueProperty().addListener(listener); c2.valueProperty().addListener(listener); final VBox vBox = new VBox(c1, c2, c3); primaryStage.setScene(new Scene(vBox)); primaryStage.show(); } 中添加相同的字符串。

如果只想添加而不删除项目,请将侦听器更改为

ComboBox

此侦听器确实防止重复项。