Поле ввода JavaFX не принимает табуляторы - PullRequest
1 голос
/ 01 апреля 2020

Итак, у меня, вероятно, простой вопрос, но я не смог найти никого, кто бы задавал этот вопрос в Google, поэтому теперь я здесь.

Проблема проста - мне нужно скопировать строку текста, которая в нем есть пробелы и табуляторы, но как только я скопирую их в поле ввода текста, он по какой-то причине удаляет все табуляторы, поэтому оставляет текст в одном большом беспорядке, и я не могу ничего от него отфильтровать.

Есть идеи, что можно сделать, чтобы эти поля ввода позволяли использовать табуляторы?

PS При нажатии клавиши табуляции, когда я нахожусь внутри поля ввода, она перемещается между кнопками вместо ввода табулятора.

1 Ответ

0 голосов
/ 02 апреля 2020

Содержимое TextField представлено частным статусом c класса TextFieldContent. TextFieldContent реализует insert(int index, String text, boolean notifyListeners) метод фильтрации входного текста. Метод использует метод stati c из класса TextInputControl для удаления «недопустимых» символов. Вот реализация:

@Override 
public void insert(int index, String text, boolean notifyListeners) {
    text = TextInputControl.filterInput(text, true, true);
    if (!text.isEmpty()) {
        characters.insert(index, text);
        if (notifyListeners) {
            ExpressionHelper.fireValueChangedEvent(helper);
        }
    }
}

Последний параметр в TextInputControl.filterInput(text, true, true) определяет, являются ли символы табуляции «незаконно» или нет. Он установлен на true, и, как я упоминал ранее, этот класс является частным классом stati c final, и вы не можете его расширить и переопределить insert метод .

. решение состоит в том, чтобы расширить TextInputControl и создать собственный класс Content, который не удаляет символы табуляции.

В качестве альтернативы вы можете использовать TextArea, текстовые области принимают символы табуляции.

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