如何在FXML中实现输入验证并禁用登录按钮
在FXML中直接实现登录按钮的禁用绑定逻辑
完全可以直接在FXML文件里实现这个验证逻辑,不用再依赖控制器里的disableProperty().bind()代码。
你只需要修改按钮的代码,给它加上disable属性的绑定表达式,和你原来控制器里的逻辑完全对应:
<TextField fx:id="usernameField" prefHeight="34.0" prefWidth="220.0" promptText="Username"/> <PasswordField fx:id="passwordField" prefHeight="34.0" prefWidth="220.0" promptText="Password"/> <Button fx:id="signinButton" mnemonicParsing="false" onAction="#onSignin" prefWidth="220.0" text="Sign in" disable="${usernameField.text.isEmpty or usernameField.text.length.lessThan(5) or passwordField.text.isEmpty or passwordField.text.length.lessThan(4)}"/>
表达式各部分含义:
usernameField.text.isEmpty:判断用户名输入框是否为空usernameField.text.length.lessThan(5):判断用户名长度是否小于5passwordField.text.isEmpty:判断密码输入框是否为空passwordField.text.length.lessThan(4):判断密码长度是否小于4- 用
or连接所有条件,只要任一条件满足,按钮就会保持禁用状态
修改完成后,你可以删除控制器configure()方法中关于按钮禁用绑定的代码,逻辑完全由FXML自动处理。
内容的提问来源于stack exchange,提问作者amin
相关产品推荐
相关产品推荐

