java - 除非 javaFX 中两个事件为真,否则如何将按钮设置为保持禁用状态?

标签 java javafx

我有两个单独的 textProperty 监听器来监听 javaFX 应用程序上的更改,以便它可以分别更新密码强度图标和有效用户名图标。这两个函数都从 TextField(用户名)和 PasswordField(密码)获取数据。这些是听众:

if(loginCheck.passwordValidator(password.getText()) == -1) {
    passwordImg.setImage(fail);
    submit.setDisable(true);
}

if(loginCheck.usernameValidator(username.getText()) == -1) {
    usernameImg.setImage(fail);
    submit.setDisable(true);
}

当一个或其他函数返回 -1 时,我试图让按钮(提交)保持禁用状态。当任一函数具有正确的输出时,我可以禁用该按钮,但如果不使用单独的 Submit.setDisable(false) 调用,我无法再次启用该按钮;当一个监听器尝试启用该按钮时,它会扁平化,而根据另一监听器,该按钮仍应被禁用。有没有办法将按钮设置为始终保持关闭状态,除非两个事件都为真?

提前致谢!

最佳答案

只需使用逻辑或运算组合您的条件 - ||

boolean invalidPassword = loginCheck.passwordValidator(password.getText()) == -1;
boolean invalidUsername = loginCheck.usernameValidator(username.getText()) == -1;

if (invalidPassword) {
    passwordImg.setImage(fail);
}

if(invalidUsername) {
    usernameImg.setImage(fail);
}

// if at least one of variables is true then submit will be disabled
submit.setDisable(invalidPassword || invalidUsername);

关于java - 除非 javaFX 中两个事件为真,否则如何将按钮设置为保持禁用状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45043783/

相关文章:

java - 如何更新 map 中的值(如果存在)否则将其插入

java - 如何在Spring中从序列生成实体字段的部分值?

java - javafx如何从其他类关闭窗口

java - 同一列中不同类型的对象

css - 如何在 JavaFX 标签的文本周围绘制边框?

java - 手工计算~100

java - JPA java.util.Date 问题

java - SQLite Android - MODE_WORLD_WRITEABLE 无法解析为变量

mysql - 无法使用数据库中的数据填充表

java - 由于创建 bundle 失败,我无法在 Eclipse 中部署 JavaFX 项目