Как ограничить ModifyListener только для взаимодействия с пользователем - PullRequest
1 голос
/ 22 февраля 2012

У меня есть текстовое поле с прикрепленным ModifyListener.
В реализованном modifyText (ModifyEvent e) я выполняю желаемую функциональность.

Проблема в том, что это событие вызывается при каждом изменении текста.

Я не хочу, чтобы это срабатывало, если текст был изменен программно (путем установки текста с помощью кода).Я хочу, чтобы он срабатывал только тогда, когда пользователь изменяет код (я не могу использовать keylistener, потому что он будет срабатывать также, когда пользователь нажимает кнопки со стрелками и т. Д., Он также не обнаружит, если пользователь копирует и вставляет текст)

Ответы [ 3 ]

3 голосов
/ 22 февраля 2012

Вы можете отменить регистрацию вашего ModifyListener перед вызовом setText(..) и затем повторно зарегистрировать его.

0 голосов
/ 21 марта 2012

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

Text text;
text.addListener(SWT.FocusOut, new Listener() {
    @Override
    public void handleEvent(Event arg0) {

        //Your code here.....

    }
});
0 голосов
/ 27 февраля 2012

Как насчет textBox.addKeyListener (...) и textBox.addMouseListener (...) вместо ModifyListener?

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