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

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

我的包装盒上有一个AutoCompleteField,这样在组合框中键入内容的任何人都可以看到Eclipse风格的AutoCompleteField。这很完美。

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

不幸的是,AutoCompleteField没有公开有用的方法,而且我几乎不了解它是如何工作的。

我怎样才能一时兴起?

最佳答案

我假设您的意思是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参数和一组自动激活字符。

关于java - 单击时打开AutoCompleteField,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30675688/

10-10 03:24