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无法阻止插入返回。