Как было сказано в комментариях:
1) анализирует входное значение только в списке щелчков кнопки, а не непосредственно в конструкторе представления (в этот момент TextField
всегда будет пустым значение)
2) поймать исключение NumberFormatException. Даже если позаботиться о пункте 1, пользователь всегда может набрать не числовые данные c, которые не будут разбираться до Integer
TextField name = new TextField();
Paragraph greeting = new Paragraph("");
Button button = new Button("Result", event -> {
int num;
try {
num = Integer.parseInt(String.valueOf(name.getValue()));
} catch (NumberFormatException e) {
num = 0; // your default value
// you should also let the user know he didnt enter a valid number
Notification.show("Please enter a valid number");
}
greeting.setText(" " + num * 500);
});
add(name, button, greeting);
Другая возможность состоит в непосредственном использовании IntegerField
вместо TextField
. Это доступно только для Vaadin 14.1.x
Еще одна возможность, которая приходит мне в голову, это использование Binder - при связывании textField вы можете добавить StringToIntegerConverter
. Это будет немного сложнее, и я не буду go этот маршрут только для этого.