задержка ввода текста - PullRequest
       13

задержка ввода текста

3 голосов
/ 08 декабря 2010

Пользователь что-то печатает в текстовом компоненте.Когда он перестает печатать на 1 секунду, я хочу получить текст и обработать его.Я пытаюсь сделать так

final Timer timer = new Timer();
    Text text = new Text(shell, SWT.BORDER);
    text.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent e) {
            timer.purge();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    //handler
                    System.out
                            .println("MainClass.main(...).new SelectionAdapter() {...}.widgetSelected(...).new TimerTask() {...}.run()");
                }
            }, 500);
        }
    });

Но этот код работает неправильно

Ответы [ 2 ]

3 голосов
/ 08 декабря 2010

Я спросил сам, и я отвечу сам :) Таймер является приватным членом

Text text = new Text(shell, SWT.BORDER);
    text.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent e) {
            if(timer != null){
                timer.cancel();
            }
            timer = new Timer();                
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    //handler
                    System.out
                        .println("MainClass.main(...).new SelectionAdapter() {...}.widgetSelected(...).new TimerTask() {...}.run()");
                    timer.cancel();
                }
            }, 1000);
        }
    });

работает! * * 1006

0 голосов
/ 08 декабря 2010

Вы можете сделать это так:

double last_edit = 0;
// this method shall be called on initialization of your Text component
void run() {
    new Thread(new Runnable() {
        public void run() {
            if (last_edit < 0) {
                // hande your text here
                last_edit = 1;
            } else {
                last_edit -= 0.1d;
            }
            try {
                Thread.sleep(100);
            } catch (InterruptedException ex) {
            }
        }
    }).start();
}
 Text text = new Text(shell, SWT.BORDER);
 text.addModifyListener(new ModifyListener() {
    @Override
    public void modifyText(ModifyEvent e) {
        last_edit = 1;
    }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...