JavaFx - когда StringConverter.fromString выполняется в DatePicker - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь настроить DatePicker и хотел бы добавить красную рамку в TextField / Editor DatePicker, когда пользовательский ввод недействителен, и удалить его снова, как только он станет действительным.Единственная проблема, с которой я сталкиваюсь, - это запуск проверки, я не могу заставить метод fromString в конвертере выполняться (который затем обновляет свойство и т. Д., Все в порядке).

У меня сложилось впечатление, что метод fromString будет выполняться при вводе данных пользователем, но, по-видимому, нет, поэтому мой вопрос сводится к вопросу «когда выполняется метод fromString».

1 Ответ

0 голосов
/ 28 декабря 2018

Не имеет значения, когда 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...