togglegroup.getSelectedToogle() 始终 returns 空 JavaFX

togglegroup.getSelectedToogle() always returns null JavaFX

我有这段代码可以从选定的 ToggleGroup 中获取值。

然而,当我 运行 此代码时,我得到一个空列表。我似乎不知道如何解决这个问题。

   public TestPane(TestService service) {
        this.service = service;

        this.setPrefHeight(300);
        this.setPrefWidth(750);

        this.setPadding(new Insets(5, 5, 5, 5));
        this.setVgap(5);
        this.setHgap(5);

        questionField = new Label();
        vragen = service.getAllQuestions();
        Question question = vragen.iterator().next();
        questionField.setText(question.getQuestion());
        vragen.remove(question);

        add(questionField, 0, 0, 1, 1);

        statementGroup = new ToggleGroup();
        Set<String> statements = question.getStatements();
        System.out.println(statements);
        int i = 1;
        for (String st : statements) {
            radio = new RadioButton(st);
            radio.setText(st);
            radio.setUserData(st);
            radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());
            add(radio, 0, i++);
        }

        submitButton = new Button("Submit");
        add(submitButton, 0, i);
        submitButton.setOnAction(new SubmitHandler(this,service));
    }

    public List<String> getSelectedStatements() {
        List<String> selected = new ArrayList<String>();
        if (statementGroup.getSelectedToggle() != null) {
            selected.add(statementGroup.getSelectedToggle().getUserData().toString());
        }
        return selected;
    }

下面这行是不正确的:

radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());

正确的调用是:

radio.setToggleGroup(statementGroup);

回答问题 "why":ToggleGroup returns 的 getSelectedToggle 方法始终为 null,因为没有与之关联的切换,因为

(ToggleGroup) statementGroup.getUserData()

returns null,所以实际上radio.setToggleGroup(null)会被执行,也就是说:RadioButton没有切换组。