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

为什么没有遍历UPDOWN箭头,但是却用了回车键。

当用于选择投标时,如何防止返回键开始插入到StyledText字段中。

最佳答案

也许问题很老了,但是当我搜寻Google时,这篇文章几乎涵盖了我的问题,但是没有解决方案,我想提供我现在发现的解决方案。

我的问题是完全一样的,但是在选择的提案之后插入了换行符。
通过双击选择提案就可以了,因此我同意您的意见,即可能是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();
        }
    } });

09-11 19:51