JavaFX单选按钮禁用/启用文本字段

时间:2015-04-11 20:23:57

标签: java javafx scenebuilder

@FXML
private void isDelivery(ActionEvent event){
    if (rdDelivery.isArmed() == true){
        txtAddress.setDisable(true);
        txtEmail.setDisable(true);
    }
    else    {
        txtAddress.setDisable(true);
        txtEmail.setDisable(true);
    }
}

此代码用于禁用文本字段,但在第一次按下后它们会保持禁用状态,并且在反复按下单选按钮时不会再次打开。 因此,首次按下后,文本字段将永久禁用

2 个答案:

答案 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)

您已经编写了代码以便在检查时禁用它们,但是当您取消选中时,您还没有做任何事情来处理。您不能指望计算机推断出这一点。

您需要在取消选中该按钮时进行侦听并正确回应。