[英]JavaFX Radio button disable/reenable text fields
@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());
}
从您的帖子中还不清楚您是否希望在选择单选按钮时启用这些字段,否则是否要启用这些字段,因此我假设在选择单选按钮时未禁用这些字段。
无论如何,您的逻辑说禁用这些字段。
使用属性绑定来控制字段的禁用状态可能会更容易。 如果选中了单选按钮,则可以启用这些字段;如果未选中,请使用单选按钮的selectedProperty()
禁用它们。
这样的东西(在您的initialize
方法中,或类似的东西):
rdDelivery.selectedProperty().bind(Bindings.not(txtAddress.disabledProperty()));
rdDelivery.selectedProperty().bind(Bindings.not(txtEmail.disabledProperty()));
您已经编写了禁用它们的代码,但是未选中时您没有做任何处理。 您不能指望计算机可以推断出这一点。
您需要在未选中按钮时进行侦听,并做出适当的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.