我有一个具有AutoCompleteField的ComboBoxViewerCellEditor。

我将其定义为:

new AutoCompleteField(cellEditor.getControl(),new CComboContentAdapter(),values);


如果我通过键盘选择了自动完成值,则我的组合正在选择一个值。问题是当我用鼠标双击预填充列表时。这对组合没有任何影响,它不会选择值。

我有什么想念的吗?我应该添加一些监听器吗?

谢谢,

路易莎

最佳答案

实际上,当您从鼠标中选择它时,您的焦点从单元格编辑器中丢失了,这就是为什么它不受影响的原因。

单元格编辑器有一种方法,类似于dependsOnexternalFocus()。默认情况下,它返回true。覆盖它并从中返回false。

在单元格编辑器类的内部构造函数中,创建您自己的内容适配器,并在下面放置代码:

    contentProposalAdapter.addContentProposalListener(new IContentProposalListener2()
    {

        public void proposalPopupClosed(ContentProposalAdapter adapter)
        {
            popupOpen = false;
        }

        public void proposalPopupOpened(ContentProposalAdapter adapter)
        {
            popupOpen = true;
        }
    });


并覆盖

 @Override
    protected void focusLost()
    {
        if (!popupOpen)
        {
            super.focusLost();
        }
    }


popupOpen是私有布尔类型变量。

10-04 19:16