установите caretPosition вправо в textField (javaFX) - PullRequest
0 голосов
/ 07 апреля 2019

Я занимаюсь разработкой приложения javaFX, в котором у пользователя есть несколько текстовых полей для заполнения и редактирования.Я хочу, чтобы, если вы вводите новое текстовое поле, переходя от другого к нажатию клавиши TAB, содержимое текстового поля не выделяется, а курсор находится справа.У текстовых полей есть прослушиватель событий, который определяет, когда они получают фокус, и я тестировал различные методы API для позиционирования курсора и отмены выбора контента при вводе текстового поля, на данный момент все безуспешно.

Гдемоя ошибка?

id_ip2B_tf.focusedProperty().addListener(new ChangeListener<Boolean>() {
    @Override
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {

        if (newValue) {
            // 1 - don't work
            id_ip2B_tf.deselect();
            id_ip2B_tf.positionCaret(id_ip2B_tf.getLength());

            // 2 - don't work
            id_ip2B_tf.end();                   
        }
    }

1 Ответ

2 голосов
/ 08 апреля 2019

Можете ли вы попробовать обернуть логику установки каретки в Platform.runLater. Нечто подобное ..

id_ip2B_tf.focusedProperty().addListener(new ChangeListener<Boolean>() {
    @Override
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
        if (newValue) {
            Platform.runLater(()->{
              id_ip2B_tf.deselect();
              id_ip2B_tf.positionCaret(id_ip2B_tf.getLength());
            });                   
        }
    }
});
...