输入时限制 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 个值?
- 如果用户键入的值 < 0,则该值应设置为 0。
- 如果用户键入的值 > 600,000,则该值应设置为 600,000。
还有更简单的解决方案。只需更改 ValueChangeListener
:
中的值
delayField.addValueChangeListener(event -> {
if (event.getValue() < 0) {
integerField.setValue(0);
} else if (event.getValue() > 600000) {
integerField.setValue(600000);
}
});
我在 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 个值?
- 如果用户键入的值 < 0,则该值应设置为 0。
- 如果用户键入的值 > 600,000,则该值应设置为 600,000。
还有更简单的解决方案。只需更改 ValueChangeListener
:
delayField.addValueChangeListener(event -> {
if (event.getValue() < 0) {
integerField.setValue(0);
} else if (event.getValue() > 600000) {
integerField.setValue(600000);
}
});