Проверьте несколько элементов с одним слушателем - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь создать почтовый клиент.Это вывод при открытии программы: enter image description here

Как видите, единственная активированная кнопка - это Reply-All .Это связано с тем, что я не могу переслать или ответить на письмо, которое не выбрано, но я могу ответить на все письма в списке.Затем, если я удаляю все электронные письма, это вывод: enter image description here

Все кнопки отключены (и это правильно).Теперь, если я изменю учетную запись, нажав Cambia Account , будет создан новый список сообщений электронной почты, но кнопка Reply-All не будет включена.Я предполагаю, что это потому, что слушатель только проверяет статус текущей почты, а не, если есть список их.Как я могу решить это?enter image description here

Это код, управляющий частью, в которой я отключаю кнопки:

public void initModel(DataModel model) {
    if (this.model != null) {
        throw new IllegalStateException("Model can only be initialized once");
    }
    this.model = model;
    model.currentEmailProperty().addListener((obs, oldEmail, newEmail) -> {
        if (oldEmail != null) {
            reply.setDisable(false);
            forward.setDisable(false);
            replyall.setDisable(true);
        }
        if (newEmail == null) {
            reply.setDisable(true);
            forward.setDisable(true);
            replyall.setDisable(true);
        } else {
            reply.setDisable(false);
            forward.setDisable(false);
            replyall.setDisable(false);
        }
    });
}

1 Ответ

0 голосов
/ 26 ноября 2018

Если отключенное состояние вашей кнопки replyall зависит от того, есть ли в списке элементы, почему вы меняете его в currentEmailProperty слушателе?Вы должны прослушать изменения в списке и обновить его там.

...