Не имеет значения, когда DatePicker
использует конвертер, но когда вы хотите, чтобы преобразование было проверено.Вы можете просто сделать это с помощью прослушивателя свойства text
editor
.
Привязка в следующем коде регистрирует такого прослушивателя:
@Override
public void start(Stage primaryStage) throws Exception {
DatePicker datePicker = new DatePicker();
TextField editor = datePicker.getEditor();
StringConverter<LocalDate> converter = datePicker.getConverter();
editor.styleProperty().bind(Bindings.createStringBinding(() -> {
try {
converter.fromString(editor.getText());
} catch (Exception e) {
return "-fx-background-color: red;";
}
return null;
}, editor.textProperty()));
Scene scene = new Scene(new VBox(datePicker), 200, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
Редактировать: конвертер используется, когда вводимый текст "фиксируется" с помощью Введите при фокусировке editor
.