如何在Enter按下后阻止StyledText中的新行

uni*_*ito 8 java user-interface swt newline styledtext

在启用了preventNewLines标志的情况下,按Enter键后,我需要阻止TextViewer创建新行.

我有这段代码:

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

但它无论如何都会产生新线......我做错了什么?有人可以给我发正确的代码如何预防吗?

编辑: 好的,我通过运气找到答案,我希望它对别人有帮助,也许......

myStyledText.addVerifyKeyListener(new VerifyKeyListener() {

    @Override
    public void verifyKey(VerifyEvent e) {
        if (preventNewLines && 
            (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR)) {
           e.doit = false;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

j.d*_*ies 0

这已在这里得到解答/sf/answers/531236891/

@Override
public boolean isNavigationEvent(ColumnViewer viewer, Event event) {
    return event.keyCode == SWT.CR || event.keyCode == SWT.KEYPAD_CR;
}
Run Code Online (Sandbox Code Playgroud)