@FXML
private void isDelivery(ActionEvent event){
if (rdDelivery.isArmed() == true){
txtAddress.setDisable(true);
txtEmail.setDisable(true);
}
else {
txtAddress.setDisable(true);
txtEmail.setDisable(true);
}
}
此代码用于禁用文本字段,但在第一次按下后它们会保持禁用状态,并且在反复按下单选按钮时不会再次打开。 因此,首次按下后,文本字段将永久禁用
答案 0 :(得分:2)
你在这个逻辑上有一个错字:
if (rdDelivery.isArmed() == true){
txtAddress.setDisable(true);
txtEmail.setDisable(true);
}
更改为:
@FXML
private void isDelivery(ActionEvent event){
txtAddress.setDisable(!rdDelivery.isArmed());
txtEmail.setDisable(!rdDelivery.isArmed());
}
如果您希望在选中单选按钮时启用这些字段,那么您的帖子中就不清楚了,所以我认为当单选按钮时字段不被禁用被选中。
无论如何,你的逻辑都说要禁用这些字段。
使用属性绑定来控制字段的禁用状态可能会更容易。如果选中了单选按钮,则可以启用这些字段,如果没有,则使用单选按钮的selectedProperty()
禁用它们。
像这样的东西(在你的initialize
方法中,或类似的东西):
rdDelivery.selectedProperty().bind(Bindings.not(txtAddress.disabledProperty()));
rdDelivery.selectedProperty().bind(Bindings.not(txtEmail.disabledProperty()));
答案 1 :(得分:0)
您已经编写了代码以便在检查时禁用它们,但是当您取消选中时,您还没有做任何事情来处理。您不能指望计算机推断出这一点。
您需要在取消选中该按钮时进行侦听并正确回应。