【发布时间】:2019-04-28 03:54:44
【问题描述】:
如您所见,唯一启用的按钮是全部回复。这是因为我无法转发或回复未选中的电子邮件,但我可以回复列表中的所有电子邮件。然后,如果我删除所有电子邮件,这是输出:
所有按钮都被禁用(这是正确的)。现在,如果我通过按 Cambia Account 更改帐户,将生成一个新的电子邮件列表,但不会启用 Reply-All 按钮。我猜这是因为侦听器只检查当前邮件的状态,而不检查是否有它们的列表。我该如何解决?
这是管理我禁用按钮的部分的代码:
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);
}
});
}
【问题讨论】:
-
监听器中第一个
if的目的是什么?所有执行路径的属性值在第二个if中被覆盖。 -
第一个 if 是当我有一个电子邮件列表但没有一个被选中时进行管理。
-
在 dataModel 中对启用/禁用状态进行建模,然后绑定到视图状态。无论如何,请提供一个 minimal reproducible example 来说明问题。
标签: java list button javafx observable