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

Posted

技术标签:

【中文标题】按下 Enter 后如何防止 StyledText 中的新行【英文标题】:How to prevent new line in StyledText after Enter pressed 【发布时间】:2012-11-01 00:07:27 【问题描述】:

如果启用了 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;
         
     
);

但无论如何它都会产生新的线条......我做错了什么? 任何人都可以向我发布正确的代码如何防止它?

编辑: 好的,我很幸运地找到了答案,希望对其他人有所帮助,也许......

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】:

这里已经回答了https://***.com/a/7589098/18445

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

【讨论】:

以上是关于按下 Enter 后如何防止 StyledText 中的新行的主要内容,如果未能解决你的问题,请参考以下文章

如何防止在 jQuery 中提交 Enter 键? [复制]

如何防止在Enter和Escape键上关闭MFC对话框?

按下 Enter 按钮后将光标保持在文本框上

HTML5:如何在任何文本输入处按 ENTER 后提交表单?

js中如何实在3秒后自动按下回车键

使用导航控制器按下后退按钮后如何防止前一个片段显示?