2012-11-12 9 views
8

Devo impedire a TextViewer di creare nuove righe dopo aver premuto il tasto Invio nel caso in cui il flag preventNewLines sia abilitato.Come impedire la nuova riga in StyledText dopo Invio premuto

ho questo pezzo di codice:

TextViewer myTextViewer = new TextViewer (myGroup, SWT.V_SCROLL 
              | SWT.FULL_SELECTION 
              | SWT.BORDER | SWT.WRAP); 
myTextViewer.setDocument(new Document(myText)); 
StyledText myStyledText = myTextViewer.getTextWidget(); 

myStyledText.addTraverseListener(new TraverseListener() { 
    @Override 
    public void keyTraversed(TraverseEvent e) { 
     if (e.detail == SWT.TRAVERSE_RETURN) { 
      if (preventNewLines) 
       e.doit = false; 
     } 
    } 
}); 

ma rende le nuove linee in ogni caso ... Che cosa sto facendo di sbagliato? Qualcuno potrebbe scrivermi il codice corretto come prevenirlo?

EDIT: OK, ho trovato la risposta dalla fortuna, spero che aiuta a qualcun altro, forse ...

myStyledText.addVerifyKeyListener(new VerifyKeyListener() { 

    @Override 
    public void verifyKey(VerifyEvent e) { 
     if (preventNewLines && 
      (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR)) { 
      e.doit = false; 
     } 
    } 
}); 
+1

Dovresti rispondere alla tua domanda e poi controllarla come se fosse ancora una domanda aperta. – GenericJam

risposta

0

Questo è stato risposto qui https://stackoverflow.com/a/7589098/18445

@Override 
public boolean isNavigationEvent(ColumnViewer viewer, Event event) { 
    return event.keyCode == SWT.CR || event.keyCode == SWT.KEYPAD_CR; 
} 
Problemi correlati