2010-12-08 7 views
2

L'utilisateur tape quelque chose dans le composant Texte. Quand il est arrêté de taper pendant 1 seconde, je veux obtenir du texte et le gérer. J'essaie de faire comme çadélai dans la saisie de texte

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); 
     } 
    }); 

Mais ce code ne fonctionne pas correctement

+0

Qu'est-ce qui ne fonctionne pas? – AlexR

+0

partie du code dans run() déclenché chaque fois que l'utilisateur tape le symbole – Nawa

+0

Je ne vous vois pas arrêter pendant 1 seconde partout dans ce code .... –

Répondre

2

Je Posée par moi-même et je vais répondre par moi-même :) timer est un membre privé

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); 
     } 
    }); 

fonctionne!

+0

Merci , Je l'ai fait il y a un certain temps mais j'ai oublié le code, cela m'a aidé. –

0

Vous pouvez le faire comme ceci:

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; 
    } 
}); 
+0

ne fonctionne pas pour moi – Nawa

Questions connexes