像“onTextDeleted(String deletedText)”或某些属性,textProperty并没有多大帮助。我可以做一些事情,比如在删除某些内容之前保存caretPosition(退格,删除或每当selectText被覆盖),并在textProperty中使用currentCaretPosition并从旧值中执行子字符串(currentCaretPosition,savedCaretPositionBeforeDelete).contains(“;”)或者反之,如果文本选择是向后完成的。
我的意思是,这似乎不太实际,这就是我目前正在做的事情。我一直在研究getUndoManager(),但是没有访问undoList()。顺便说一句,我正在使用Tomas Mikula的RichtextFX。
答案 0 :(得分:0)
TextFormatter可以处理和控制TextInputControl的更改。
这是一种扩展JavaFX的TextInputControl的组件方法。
textArea.setTextFormatter(new TextFormatter<String>(change -> {
if (change.isDeleted() || change.isReplaced()) {
System.out.println("Text removal: " + change.getControlText().substring(change.getRangeStart(), change.getRangeEnd()));
System.out.println("Text additional: " + change.getText());
System.out.println("CaretPosition current: " + change.getControlCaretPosition());
System.out.println("CaretPosition to: " + change.getCaretPosition());
// change.setCaretPosition(position);
}
return change;
}));
有关详细信息,请参阅TextFormatter.Change: API Document。