togglegroup.getSelectedToogle()始终返回null JavaFX

时间:2018-08-18 16:51:20

标签: java javafx toggle

我有这段代码可以从选定的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;
    }

1 个答案:

答案 0 :(得分:1)

以下行不正确:

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

正确的呼叫应该是:

radio.setToggleGroup(statementGroup);

要回答“为什么”的问题:getSelectedToggle的{​​{1}}方法始终返回null,因为没有与之关联的切换,如

ToggleGroup

返回(ToggleGroup) statementGroup.getUserData() ,因此实际上将执行null,这意味着:radio.setToggleGroup(null)没有切换组。

相关问题