您好,我需要限制 TextField javaFX 的输入,不仅适用于整数,还适用于 1 - 19 之间的数字。例如,我应该允许输入: "3" 、"19" ...但不能输入: "33" , 44 ..
例如 :在 JavaFX 中创建数字 TextField 的推荐方法是什么? https://stackoverflow.com/questions/7555564/what-is-the-recommended-way-to-make-a-numeric-textfield-in-javafx但这限制了文本字段只能用于整数。
您可以使用regex
允许您的特定数字范围(1-19)并在 TextField 上添加该验证文本格式化程序 https://docs.oracle.com/javase/8/docs/api/javax/swing/event/ChangeListener.html's filter
.
正则表达式 =>([1-9]|1[0-9])
-
[1-9]
任一文本字段都允许您输入 1 到 9 的数字
-
1[0-9]
或者 TextField 允许您输入 10 到 19 个数字
正则表达式电路
文本字段验证演示
public class TextFieldValidationDemo extends Application {
private static final String REGEX_VALID_INTEGER = "([1-9]|1[0-9])";
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane root = new BorderPane();
root.setCenter(getRootPane());
primaryStage.setScene(new Scene(root, 200, 200));
primaryStage.show();
}
private BorderPane getRootPane() {
BorderPane root = new BorderPane();
root.setCenter(getTextField());
return root;
}
private TextField getTextField() {
TextField field = new TextField();
field.setTextFormatter(new TextFormatter<>(this::filter));
return field;
}
private TextFormatter.Change filter(TextFormatter.Change change) {
if (!change.getControlNewText().matches(REGEX_VALID_INTEGER)) {
change.setText("");
}
return change;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)