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

标签 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);
    }
}

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

最佳答案

您的逻辑有一个拼写错误:

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/

相关文章:

JavaFX,可以在两个具有过渡效果的 Pane 之间切换的容器

java - 无法加载 fxml 文件

JavaFX + Scene Builder 如何切换场景

java - 在 Java 中获得最合适的实例方法

java - 骰子模拟java

java - Java 中使用 HTTPClient 的 GZip POST 请求

JavaFX : Cannot find Symbol MouseEvent

JavaFX - 如何使用来自另一个 Controller 的 Controller 中的方法?

SceneBuilder 中的 JavaFX 和 TableView

java - 如何将 Wicket 的 DownloadLink 与动态生成的文件一起使用?