【问题标题】:Scene Builder , how to pair ComboBoxs selection场景生成器,如何配对组合框选择
【发布时间】:2016-01-10 22:40:06
【问题描述】:

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

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

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版本?也许尝试将呼叫切换到setItems()setValue()
  • jdk1.7.0_80.jdk。交换 setItems() 和 setValue() 工作。请将此作为正确答案提交,以便为您标记。再次感谢。我不知道为什么它对我不起作用,但它对你起作用。
  • 你的 JDK 已经过时了。这可能是一个已修复的旧错误。添加了答案;很高兴它有帮助。

标签: java javafx combobox scenebuilder


【解决方案1】:

这对我来说在 JDK 1.8.0_66 上运行良好。这可能是一个已被修复的旧错误。

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

@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");
    }

}

【讨论】:

  • 谢谢,现在当我尝试从一个场景移动到另一个场景时,我得到 (URL url, ResourceBundle rb) rb 空指针。我的组合框有价值。所以我不确定为什么我会得到那个空指针。
猜你喜欢
  • 2016-05-17
  • 2015-06-10
  • 1970-01-01
  • 2016-12-06
  • 2016-08-09
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多