Вырезать и вставить в JTextArea

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

Однако теперь я хочу обработать условие, когда пользователь выполняет опцию «вырезать» или «вставить», нажимая «Ctrl + X» и «Ctrl + V». Я знаю, что методы по умолчанию из JTextComponent наследуются в JTextArea, но я хочу получить вырезанный текст и узнать длину вырезанного текста, чтобы уменьшить счетчик, поддерживаемый для символов, и увеличить его при вставке на соответствующую сумму.


person Supereme    schedule 05.02.2010    source источник


Ответы (3)



Создайте DocumentFilter и установите его на новый PlainDocument. Используйте этот документ для создания файла JTextArea. (Или используйте документ по умолчанию JTextArea после приведения к AbstractDocument).

См. мой ответ здесь для примера.

person user85421    schedule 05.02.2010

Прочтите раздел руководства Swing по Реализация фильтра документов для рабочего кода, который ограничивает количество символов в текстовом компоненте.

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

person camickr    schedule 05.02.2010