是否将TextField限制为JavaFX数字的特定范围?

嗨,我不仅需要限制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的TextFormatterfilter上添加该验证。

正则表达式=> ([1-9]|1[0-9])

  • [1-9]任一TextField允许您输入1到9个数字
  • 1[0-9]或TextField允许您输入10到19个数字

Regex Circut

enter image description here

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;
    }
}
本文链接:https://www.f2er.com/2951956.html

大家都在问