Получение и запоминание выбранного RadioButton в JavaFX - PullRequest
0 голосов
/ 26 июня 2018

У меня есть этот метод в моем приложении JavaFx для создания RadioButton s.

private HBox createModesRadios(IntegerProperty count, Mode... modes) {
    ToggleGroup group = new ToggleGroup();
    HBox result = new HBox(50);
    result.setPadding(new Insets(20, 0, 0, 0));
    result.setAlignment(Pos.CENTER);
    for (Mode mode : modes) {
        RadioButton radio = new RadioButton(mode.getText());
        radio.setToggleGroup(group);
        radio.setUserData(mode);
        result.getChildren().add(radio);

    }
    if (modes.length > 0) {
        group.selectToggle((Toggle) result.getChildren().get(0));
        count.bind(Bindings.createIntegerBinding(() -> ((Mode) group.getSelectedToggle().getUserData()).getCount(), group.selectedToggleProperty()));

        } else {
        count.set(0);
    }
    return result;
}

Он вызывается в моем initialize() методе внутри моего класса Controller следующим образом HBox radioBox = createModesRadios(elementCount, modes);.

Это режим класса помощника:

public class Mode {

private final String text;
private final int count;

public Mode(String text, int count) {
    this.text = text;
    this.count = count;
}

public String getText() {
    return text;
}

public int getCount() {
    return count;
}
}

Как сохранить кнопку, выбранную пользователем? Было бы здорово сохранить в переменной String метод mode.getText() для выбранной кнопки. Также я хотел бы вернуть назад ранее выбранную кнопку, чтобы приложение могло запомнить выбор.

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете добавить что-то подобное в объявлениях переменных внутри вашего класса контроллера: private List<RadioButton> radioButtonsList = new ArrayList<>();

Затем вы можете добавить что-то подобное внутри цикла for в методе, который вы упомянули

...
radioButtonsList.add(radio);
...

После этого вы можете вызвать нужную кнопку с помощью radioButtonList.get()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...