2012-11-12 9 views
8

Ich muss verhindern, dass TextViewer neue Zeilen erstellt, nachdem ich die Enter-Taste gedrückt habe, falls preventNewLines Flag aktiviert ist.Wie verhindere ich eine neue Zeile in StyleText, nachdem Enter gedrückt wurde

Ich habe dieses Stück Code:

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

Aber es macht sowieso neue Linien ... Was mache ich falsch? Könnte mir bitte jemand den richtigen Code schreiben, um es zu verhindern?

EDIT: OK, ich die Antwort von Glück gefunden haben, ich hoffe, es jemand anderem hilft, vielleicht ...

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

Sie sollten Ihre eigene Frage beantworten und sie dann als beantwortet markieren, da es noch eine offene Frage ist. – GenericJam

Antwort

0

Das hier https://stackoverflow.com/a/7589098/18445

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