@FXML
private void isDelivery(ActionEvent event){
if (rdDelivery.isArmed() == true){
txtAddress.setDisable(true);
txtEmail.setDisable(true);
}
else {
txtAddress.setDisable(true);
txtEmail.setDisable(true);
}
}
此代码用于禁用文本字段,但在第一次按下后,它们保持禁用状态,并且在反复按下单选按钮时不会重新打开。 因此,第一次按下后,文本字段将永久禁用
最佳答案
您的逻辑有一个拼写错误:
if (rdDelivery.isArmed() == true){
txtAddress.setDisable(true);
txtEmail.setDisable(true);
}
更改为:
@FXML
private void isDelivery(ActionEvent event){
txtAddress.setDisable(!rdDelivery.isArmed());
txtEmail.setDisable(!rdDelivery.isArmed());
}
从您的帖子中不清楚您是否希望在选择单选按钮时启用这些字段,而不是其他情况,因此我假设在选择单选按钮时不禁用这些字段。
无论如何,您的逻辑表明要禁用这些字段。
使用属性绑定(bind)来控制字段的禁用状态可能会让事情变得更容易。如果选中了单选按钮,则可以启用这些字段,如果没有,则使用单选按钮的 selectedProperty()
禁用它们。
类似这样的东西(在你的initialize
方法中,或类似的):
rdDelivery.selectedProperty().bind(Bindings.not(txtAddress.disabledProperty()));
rdDelivery.selectedProperty().bind(Bindings.not(txtEmail.disabledProperty()));
关于JavaFX 单选按钮禁用/启用文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29582671/