输入时限制 Vaadin IntegerField 中的输入

Restrict input in Vaadin IntegerField when typing

我在 Vaadin 14 中有一个简单的 IntegerField,设置如下:

final IntegerField delayField = new IntegerField();
delayField.setMin(0);
delayField.setMax(600000);
delayField.setStep(1000);
delayField.setHasControls(true);

binder.forField(delayField).bind(AppConfiguration::getNotificationDelay, AppConfiguration::setNotificationDelay);

使用步进控件无法输入小于 0 或大于 600,000 的值。但是如果我直接输入一个值,那么像 -52 这样的值是可能的。我的理解是 setMin()setMax() 也适用于用户输入。

如何自动将输入限制为 min/max 个值?

还有更简单的解决方案。只需更改 ValueChangeListener:

中的值
delayField.addValueChangeListener(event -> {
        if (event.getValue() < 0) {
            integerField.setValue(0);
        } else if (event.getValue() > 600000) {
            integerField.setValue(600000);
        }
    });