首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >场景生成器,如何配对ComboBoxs选择

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

Stack Overflow用户
提问于 2016-01-10 22:40:06
回答 1查看 62关注 0票数 0

使用jdk1.7.0_80.jdk:我有2个ComboBoxes;我想从mainComboBox中选择一个值,subCombobox根据从mainComboBox中选择的值自动加载。以及它在subComboBox中的一组独特的选择:我的初始化工作如下面的屏幕快照所示。

现在我的问题是何时更改mainComboBox的值。当我这样做时,没有任何东西会在subComoboBox中被预选/显示。我使用comboBoxChoice加载ObservableList中可用的不同选项。但出于一些奇怪的原因,它并没有出现。

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-12 00:12:14

在JDK 1.8.0_66上,这对我来说很好。这可能是因为这是一个旧的错误,并已被修复。

我建议您切换setItems()setValue()的顺序;替换所有项很可能会删除所选的旧项,即使它在“新”列表中。

也就是说。

代码语言:javascript
复制
@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");
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34711627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档