嗨,我不仅需要限制TextField javaFX的输入,而且还必须限制1-19之间的数字。例如,应该允许我输入:“ 3”,“ 19” ...,但不能输入:“ 33“,44 .. 例如:What is the recommended way to make a numeric TextField in JavaFX?,但这将文本字段限制为整数。
vacant_7 回答:是否将TextField限制为JavaFX数字的特定范围?
我现在修改了我的代码。此代码使您只能输入“ 13”和“ 13”。它还检查输入是否在范围内。
演示应用
@Query("SELECT new map ( s.name as name,s.address as address) FROM Students s where s.studentsId = ?1")
List<Students> getAllStudents(long id);
,
您可以使用regex
允许特定数字的范围(1-19),并在TextField的TextFormatter的filter
上添加该验证。
正则表达式=> ([1-9]|1[0-9])
-
[1-9]
任一TextField允许您输入1到9个数字 -
1[0-9]
或TextField允许您输入10到19个数字
Regex Circut
TextField验证演示
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;
}
}