Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Слушать редактирование текста


Автор: _Y_ 30.12.2019, 21:46
Не пишу на Java очень давно, но иногда приходится поддерживать старые проекты. Так что извините, если вопрос несколько чайниковый.

Имеется поле JTextField или JTextArea. Надо к такому полю добавить Listener, который бы сообщал, что текст изменён пользователем. Попробовал использовать DocumentListener, но он реагиреут на любые изменения, а мне нужно слушать только те изменения, которые ввёл пользователь.

Думал, может быть какой-нибудь KeyListener надо использовать, но тогда будет слушаться не изменение текста в поле, а любое нажатие клавиш. Да и изменения мышью как-то отдельно придётся слушать.

Как грамотно поступить?

Автор: LSD 2.1.2020, 19:48
Цитата(_Y_ @  30.12.2019,  22:46 Найти цитируемый пост)
Попробовал использовать DocumentListener, но он реагиреут на любые изменения, а мне нужно слушать только те изменения, которые ввёл пользователь.

А кто кроме пользователя, еще меняет документ?

Автор: SVN74 2.1.2020, 23:55
Как вариант можно проверять контрольную сумму текста (к примеру CRC32), при попытке сохранения документа пользователем...

Автор: _Y_ 9.1.2020, 22:16
Цитата(LSD @  2.1.2020,  19:48 Найти цитируемый пост)
А кто кроме пользователя, еще меняет документ? 

Поле получает значение при инициализации, а пользователь может его менять.

Подозреваю, что вопрос свой я могу уже снять.

Стояла задача сделать Undo/Redo функцию не для одного текстового поля (что решается стандартным классом javax.swing.undo.UndoManager), а для формы, состоящей из полей разных типов. Для этого на каждом поле надо было бы слушать изменения, внесённые пользователем, но не самой программой.

Но за прошедшие несколько дней пришло понимание, что приоритетность такого Undo/Redo для моего поекта стремится к нулю.

Спасибо

Автор: LSD 13.1.2020, 21:56
Я бы, создал документ, инициализировал его нужными данными, а затем бы уже повесил слушателя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)