Я попытался создать кнопку, которая может вставлять специальный символ в TextField, и это моя первоначальная реализация:
// input is a TextField
input.insertText(input.getCaretPosition(), "∞");
Но я обнаружил, что он всегда вставляет текст в начало, затем после В некоторых попытках я обнаружил, что «не фокус» TextField заставит caretPosition
перейти к 0. И это не то, что я хочу, поэтому я попытался использовать прямое прослушивание свойства caretPosition
, например:
AtomicInteger caretPos = new AtomicInteger();
input.caretPositionProperty().addListener((obs, oldVal, newVal) -> {
caretPos.set(newVal.intValue());
System.out.println(newVal.intValue());
});
Но проблема в том, что слушатель все равно будет вызываться при потере фокуса, который снова сбрасывает caretPos
в 0.