Вы можете получить смещение и длину (и даже источник Document
), так что символы могут быть прочитаны из этого. Если вы хотите узнать, что представляют собой удаленные символы, вы должны были бы сохранить копию содержимого документа.
Swing-документы должны быть поточно-ориентированными (хе-хе). Но если в других потоках происходят множественные изменения (события всегда запускаются в EDT просто для того, чтобы сделать вещи более увлекательными), тогда данные о персонаже могут быть устаревшими. На самом деле вы ничего не можете с этим поделать. Даже другие слушатели событий могут в итоге косвенно изменить содержимое документа.
Как правило, простой подход к событиям - полностью игнорировать объект события. Все, что вам нужно знать, - это что-то (возможно) изменившееся в объектах, которые вы слушаете. Это должно дать вам надежный и легкий для понимания код. Если вам действительно нужно поработать над изменениями, DocumentFilter
, упомянутый camickr, является полезной вещью, добавленной в Swing начиная с swingall.jar (кроме лучшей нативной точности L & F).
(Обратите внимание, что многие люди не могут прочитать документы для DocumentListener.changedUpdate - это относится к изменяющимся атрибутам, а не к символам.)