如何在按下回车键后防止StyledText换行

10

如果启用了preventNewLines标志,我需要防止TextViewer在按Enter键后产生新行。

我有这段代码:

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

但它仍然会产生新行……我做错了什么?有人可以发布正确的代码以防止这种情况吗?

编辑: 好的,我偶然发现了答案,希望对其他人有所帮助。

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
你应该回答自己的问题,然后将其标记为已回答,因为它仍然是一个未解决的问题。 - GenericJam
1个回答

0

这个问题已经在这里得到了回答 https://stackoverflow.com/a/7589098/18445

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接