我正在使用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/