文本输入延迟

Naw*_*awa 4 java swt

用户在 Text 组件中输入内容。当他停止打字 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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

但是这段代码工作不正常

Naw*_*awa 5

我自己问,我自己回答 :) timer是私人成员

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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

作品!