Java ContentProposalAdapter阻止选择方案上的新行

Java ContentProposalAdapter阻止选择方案上的新行,java,eclipse,swt,eclipse-rcp,Java,Eclipse,Swt,Eclipse Rcp,我使用ContentProposalAdapter为我的StyledText字段提供内容帮助。我编写了一个适配器,它实现了IControlContentAdapter,IControlContentAdapter2,以支持StyledText。我的问题是,当我按return键插入提案时,return键会插入到StyledText中,然后再插入提案 为什么没有遍历向上和向下箭头,但返回键是 如何防止在用于选择提案时将返回键begin插入StyledText字段。我不知道您是如何在代码中实现ICon

我使用
ContentProposalAdapter
为我的StyledText字段提供内容帮助。我编写了一个适配器,它实现了
IControlContentAdapter
IControlContentAdapter2
,以支持StyledText。我的问题是,当我按return键插入提案时,return键会插入到StyledText中,然后再插入提案

为什么没有遍历
向上
向下
箭头,但返回键是


如何防止在用于选择提案时将返回键begin插入StyledText字段。

我不知道您是如何在代码中实现
IControlContentAdapter
IControlContentAdapter2
的。你试过了吗?我在自定义
StyledText
实现中使用它。但是它们都是
SWT。单个
文本字段。我希望它能对你有所帮助。

也许这个问题很老了,但当我在谷歌上搜索时,这篇文章几乎涵盖了我的问题,但没有解决方案,我想提供我现在找到的解决方案

我的问题完全相同,但换行符是在选定的提案之后插入的。 通过双击来选择方案效果很好,所以我同意您的看法,可能是StyledTextWidget收到了关于输入的通知。。。 首先,我在我的ContentProposalAdapter上尝试了setPropagateKeys(false),因为文档说它“指示当建议弹出窗口打开时,内容建议弹出窗口接收到的关键事件(包括自动激活字符)是否也应传播到适配控件”。但这也不起作用

实际上对我有效的是: 我向StyledTextWidget添加了一个VerifyKeyListener,并在ProposalPopup打开时过滤了Enter事件。我认为在提案之后插入新行可能不起作用,但在我的程序中,它工作得很好,因此似乎提案弹出窗口的关闭是在将Enter键传递给StyledTextWidget之后完成的

代码如下:

styledText.addVerifyKeyListener(new VerifyKeyListener() {

@Override
public void verifyKey(VerifyEvent arg0) {
        try {
            KeyStroke k = KeyStroke.getInstance("Enter");
            if(k.getNaturalKey() == arg0.keyCode &&  contentProposalAdapter.isProposalPopupOpen()) {
                arg0.doit = false;
            }
        } catch (ParseException e) {
                e.printStackTrace();
        }
    } });

谢谢你的回答。我需要StyledText是SWT.MULTI。我尝试了你的实现,但效果是一样的。我认为问题出在ContentProposalAdapter内部。更具体地说,我认为ContentProposalAdapter中的TargetControlListener无法阻止插入返回。