gpt4 book ai didi

java - 场景生成器,如何配对 ComboBoxs 选择

转载 作者:行者123 更新时间:2023-12-01 10:36:10 25 4
gpt4 key购买 nike

使用jdk1.7.0_80.jdk:我有 2 个组合框;我想从 mainComboBox 中选择一个值,并根据从 mainComboBox 中选择的值自动加载 subCombobox。以及 subComboBox 中独特的一组选择:我的初始化工作如下面的屏幕截图所示。 enter image description here

现在我的问题是当我更改 mainComboBox 的值时。当我这样做时,subComoboBox 中不会预先选择/显示任何内容。我正在使用comboBoxChoice 加载ObservableList 中可用的不同选项。但由于某种奇怪的原因,它没有发挥作用。

enter image description here

public class FXMLDocumentController implements Initializable {
ObservableList<String> mainList = FXCollections.observableArrayList("Main-1","Main-2","Main-3");
ObservableList<String> main1SubList = FXCollections.observableArrayList("Main1-Sub1","Main1-Sub2","Main1-Sub3");
ObservableList<String> main2SubList = FXCollections.observableArrayList("Main2-Sub1","Main2-Sub2","Main2-Sub3");
ObservableList<String> main3SubList = FXCollections.observableArrayList("Main3-Sub1","Main3-Sub2","Main3-Sub3");


@FXML
private ComboBox mainComboBox, subComboBox;


@Override
public void initialize(URL url, ResourceBundle rb) {
mainComboBox.setValue("Main-1");
mainComboBox.setItems(mainList);

subComboBox.setValue("Main1-Sub1");
subComboBox.setItems(main1SubList);
}

@FXML
private void comboBoxChoice() {
if (mainComboBox.getValue().equals("Main-1") ) {
subComboBox.setValue("Main1-Sub1");
subComboBox.setItems(main1SubList);
}
if (mainComboBox.getValue().equals("Main-2") ) {
subComboBox.setValue("Main2-Sub1");
subComboBox.setItems(main2SubList);
}
if (mainComboBox.getValue().equals("Main-3") ) {
subComboBox.setValue("Main3-Sub1");
subComboBox.setItems(main3SubList);
}

}
}

FXML 文件:

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="javafxapplication18.FXMLDocumentController">
<children>
<Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
<ComboBox fx:id="mainComboBox" layoutX="103.0" layoutY="136.0" onAction="#comboBoxChoice" prefWidth="150.0" />
<ComboBox fx:id="subComboBox" layoutX="103.0" layoutY="162.0" prefWidth="150.0" />
</children>
</AnchorPane>

最佳答案

这对我来说在 JDK 1.8.0_66 上工作得很好。这可能是一个老错误,现已修复。

我建议交换setItems()setValue()的顺序;替换所有项目可能会删除旧的选定项目,即使它位于"new"列表中。

@FXML
private void comboBoxChoice() {
if (mainComboBox.getValue().equals("Main-1") ) {
subComboBox.setItems(main1SubList);
subComboBox.setValue("Main1-Sub1");
}
if (mainComboBox.getValue().equals("Main-2") ) {
subComboBox.setItems(main2SubList);
subComboBox.setValue("Main2-Sub1");
}
if (mainComboBox.getValue().equals("Main-3") ) {
subComboBox.setItems(main3SubList);
subComboBox.setValue("Main3-Sub1");
}

}

关于java - 场景生成器,如何配对 ComboBoxs 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711627/

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