Вопрос будет слишком абстрактным, поэтому расскажу, как сейчас реализована одна возможность и что в реализации не нравится. Вопрос вообще-то простой: как сделать это правильно? Уточнения вопроса в процессе.
Сейчас в приложении реализована такая задумка: есть редактируемый комбобокс. Пользователь вводит в него некую строку с wildcard'ами, для простоты, будем считать, что это просто *, нажимает на стрелочку, чтобы выпало меню. В этот момент приложение связывается с сервером, сообщает ему пользовательский шаблон, сервер сообщает все строки, которые с ним совпадают, приложение набивает ими попап-меню и показывает его пользователю. Пользователь выбирает строку, она становится выбранным элементом комбобокса. Также, пользователь может просто ввести строку в редактируемый комбобокс и ничего не делать с попапом, она просто станет selected item.
Сейчас подгрузка сделана так: пользователь вводит свой шаблон, нажимает стрелочку. Вызывается метод beforePopupComesVisible у соотвествующего листенера. Этот метод вызывается, как следует из названия, строго перед показом попапа. В коде метода (1) Попап скрывается :) (2) в отдельном треде получается список (3) тот тред перекидывает в свинговский тред задания: набить список комбобокса результатом и показать попап. Криво. В какой момент и как это должно происходить по нормальному? Чтобы сначала набивался список, а потом уже показывался попап? Дизайн менять очень-очень не рекомендуется. Да, и второй раз посмотреть полученный список нельзя, при попытке его открыть снова идёт запрос серверу, но это пофиксить уже реально.
И ещё, возникает несколько багов. Если из того листенера вызвать модальный диалог (с сообщением о синтаксической ошибке в шаблоне, они там возможны), то кнопка со стрелочкой останется залипшей, попап меню не скроется и будет куча других реализация-и-версия-java-машины-related багов. На IBM'овской Джаве, если в списке нету введённого пользователем шаблона, а его там быть не может, введённый пользователем шаблом исчезает на время показа списка.
В-общем, вот. Понятно, что гвозди микроскопом забиваются. Я бы сделал что-то типа второй кнопки, заполняющей комбобокс, а его родной кнопке оставил бы первоначальную функциональность, но дизайн менять, как сказано выше, скорее всего нельзя. Вот.