gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:49:11 27 4
gpt4 key购买 nike

我有两个组合框:水果饮料

fruits 具有字符串:“apple”、“orange”、“banana”

drinks 具有字符串:“water”、“coffee”、“juice”

如何制作一个组合框,其中包含用户为水果组合框和饮料组合框选择的值?

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

最佳答案

使用前 2 个 ComboBox 的 value 属性的监听器,并从中更新第三个 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();
}

请注意,这不会阻止从两个 ComboBoxes 添加相同的字符串。

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

ChangeListener<String> listener = (o, oldValue, newValue) -> {
final List<String> items = c3.getItems();
int index = items.indexOf(newValue);
if (index < 0) {
items.add(newValue);
}
};

此监听器确实可以防止重复的项目。

关于java - 如何创建一个使用另一个 ComboBox 中的值的 ComboBox? JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56457169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com