单击打开 AutoCompleteField

Open AutoCompleteField on click

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

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

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

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

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

如何让它随心所欲地出现?

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

AutoCompleteField 仅适用于最简单的自动完成使用,对于更复杂的情况,您需要使用较低级别的 classes.

这是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);

可以使用openProposalPopup()方法根据需要打开辅助的是ContentProposalAdapter - 这是protected方法所以需要使用class派生从 ContentProposalAdapter 开始使用它。

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