我使用ContentProposalAdapter
为我的 StyledText 字段提供内容帮助。我编写了一个实现IControlContentAdapter
,IControlContentAdapter2
以支持 StyledText 的适配器。我的问题是,当我按回车键插入提案时,回车键被插入到 StyledText 中,然后提案被插入。
为什么没有遍历UP
和DOWN
箭头,但是返回键是。
当用于选择提案时,如何防止返回键开始插入到 StyledText 字段中。
我使用ContentProposalAdapter
为我的 StyledText 字段提供内容帮助。我编写了一个实现IControlContentAdapter
,IControlContentAdapter2
以支持 StyledText 的适配器。我的问题是,当我按回车键插入提案时,回车键被插入到 StyledText 中,然后提案被插入。
为什么没有遍历UP
和DOWN
箭头,但是返回键是。
当用于选择提案时,如何防止返回键开始插入到 StyledText 字段中。
也许这个问题很老,但是当我用谷歌搜索时,这篇文章几乎涵盖了我的问题,但没有解决方案,我想提供我现在找到的解决方案。
我的问题完全相同,但在所选提案之后插入了换行符。通过双击选择提案工作得很好,所以我同意你的观点,它可能是 StyledTextWidget 收到有关 Enter 的通知...首先我在我的 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();
}
} });
我不知道你是如何在你的代码中实现IControlContentAdapter
的。IControlContentAdapter2
你试过这个吗?我在我的自定义StyledText
实现中使用它。但它们都是SWT.SINGLE
文本字段。我希望它可以帮助你。