Получение удаленного текста из текстового компонента Java

JTextComponent позволяет вам добавить DocumentListener к своему Document, который сообщит вам, когда текст был добавлен или удален, а также смещение и длину изменения. Однако он не скажет вам, какой был текст изменения.

Это не большая проблема для добавления текста, так как вы можете использовать смещение и длину, чтобы найти добавленный текст. Однако вы не можете использовать его для поиска удаленного текста, так как текст уже исчез.

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


person Amanda S    schedule 26.02.2009    source источник


Ответы (3)


Установите DocumentFilter в AbstractDocument.

(Кстати: в Swing обычно лучше сразу перейти к модели (в данном случае к документу).)

person Tom Hawtin - tackline    schedule 26.02.2009

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

person Josh Stodola    schedule 26.02.2009
comment
именно то, что я предложил - просто немного медленнее, чем вы ;-) - person Gambrinus; 26.02.2009

сохраните исходную версию текста в свойстве, где вы все еще можете выполнить трюк «смещение длины», чтобы получить удаленную строку. должно быть хорошо

person Gambrinus    schedule 26.02.2009