Содержимое 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
, текстовые области принимают символы табуляции.