2015-06-05 2 views
0

Я использую среду AWT Eclipse, и у меня есть combobox.Open AutoCompleteField при нажатии

Я установил видимое количество элементов в combobox равным 0, так что при нажатии выпадающего меню ничего не отображается (даже если поле заполнено).

У меня есть AutoCompleteField на коробке, так что любой, кто вводит в combobox, видит AutoCompleteField в стиле Eclipse. Это прекрасно работает.

Однако, я хотел бы иметь возможность запуска AutoCompleteField появляться в определенных обстоятельствах, а не только когда пользователь начинает вводить текст. Например, я бы хотел, чтобы он появлялся, когда пользователь щелкает треугольник выпадающего списка, так что это похоже на внешний вид автозаполнения Eclipse вместо обычного раскрывающегося списка.

К сожалению, AutoCompleteField не предоставляет никаких полезных методов, и я не понимаю, как это работает.

Как я могу заставить его появиться по прихоти?

ответ

0

Я предполагаю, что вы имеете в виду SWT/JFace AutoCompleteField (AWT - старый графический интерфейс Java).

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 для активации ассистента и набора символов автоматической активации.

+0

спасибо! Я создал небольшой частный внутренний класс, чтобы открыть openProposalPopup(), и он, казалось, делал то, что я хотел, но, к сожалению, всплывающее окно исчезает примерно через 1-2 кадра. Я думаю, что это из-за нашего сложного способа заполнить его предметами ... – andy

Смежные вопросы