【问题标题】:Open AutoCompleteField on click点击打开 AutoCompleteField
【发布时间】:2015-08-20 22:40:17
【问题描述】:

我正在使用 Eclipse AWT 框架,并且我有一个组合框。

我已将组合框中项目的可见数量设置为 0,因此单击下拉菜单不会显示任何内容(即使该框已填充)。

我在框中有一个 AutoCompleteField,因此任何输入组合框的人都会看到 Eclipse 样式的 AutoCompleteField。这非常有效。

但是,我希望能够触发 AutoCompleteField 在某些情况下出现,而不仅仅是在用户开始输入时。例如,我希望它在用户单击下拉三角形时出现,所以它就像 Eclipse 风格的 AutoCompleteField 出现而不是正常的下拉菜单。

不幸的是,AutoCompleteField 没有公开任何有用的方法,我几乎不明白它是如何工作的。

我怎样才能让它随心所欲地出现?

【问题讨论】:

    标签: java eclipse autocomplete awt


    【解决方案1】:

    我假设您的意思是 SWT / JFace AutoCompleteField(AWT 是旧的 Java GUI)。

    AutoCompleteField 仅用于最简单的自动完成功能,对于更复杂的情况,您需要使用较低级别的类。

    这是AutoCompleteField 设置的:

    Control control = your control
    IControlContentAdapter controlContentAdapter = your control context adapter
    String[] proposals = your proposals
    
    SimpleContentProposalProvider proposalProvider = new SimpleContentProposalProvider(proposals);
    
    proposalProvider.setFiltering(true);
    
    ContentProposalAdapter adapter = new ContentProposalAdapter(control, controlContentAdapter, proposalProvider, null, null);
    
    adapter.setPropagateKeys(true);
    adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
    

    ContentProposalAdapter 可以根据需要使用openProposalPopup() 方法打开助手 - 这是一个protected 方法,因此需要使用派生自ContentProposalAdapter 的类才能使用它。

    ContentProposalAdapter 还具有用于激活辅助的 KeyStroke 参数和一组自动激活字符。

    【讨论】:

    • 谢谢!我创建了一个小的私有内部类来公开 openProposalPopup(),它似乎做了我想要的,但不幸的是,弹出窗口在大约 1-2 帧后消失了。我认为这是因为我们使用项目填充它的复杂方式......
    • 谢谢,我创建了bugs.eclipse.org/bugs/show_bug.cgi?id=567838 来公开这个方法。
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2018-05-06
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多