Togglegroup.getSelectedToogle () всегда возвращает 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;
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
732
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Следующая строка неверна:

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

Правильный вызов будет:

radio.setToggleGroup(statementGroup);

Чтобы ответить на вопрос «почему»: метод getSelectedToggle в ToggleGroup все время возвращает ноль, потому что с ним не связаны никакие переключатели, так как

(ToggleGroup) statementGroup.getUserData()

возвращает null, поэтому на самом деле будет выполняться radio.setToggleGroup(null), что означает: RadioButton не имеет группы переключения.

Другие вопросы по теме