SWT: правильная обработка потерянного / полученного фокуса в пользовательских элементах управления - PullRequest
2 голосов
/ 03 июня 2010

Наш контроль
У меня есть пользовательская реализация SWT Combobox / DropDownList.
Это реализовано в виде Composite, содержащего текст и кнопку.
Когда список отображается, мы используем элемент управления List, который помещается поверх всего и размещается над текстом и кнопкой.

Это работает как ожидалось.

Проблема
Но у нас есть проблемы с focusLost и focusGained.
В конечном счете, я хотел бы, чтобы любой внешний компонент получал focusGained, когда любая часть пользовательского усиления фокусировки, и выбрасывал focusLost только тогда, когда фокус потерян из любой части и никакая другая часть не получает фокус.

Я бы хотел избежать обработки focusLost и focusGained, когда фокус просто перемещается из текста на кнопку внутри моего пользовательского элемента управления.

Кто-нибудь знает API, который нужно знать, во время focusLost, где приземлится фокус?
У кого-нибудь есть идеи, как это реализовать?

1 Ответ

2 голосов
/ 07 июня 2010

Проще говоря, нет способа определить, какой контроль получил фокус изнутри focusLost().

Я бы предложил добавить FocusListener s к каждому элементу управления в вашем композите (вы можете автоматизировать это путем итерации по getChildren()) и отслеживать объект фокуса с помощью общего поля.

Другими словами, к сожалению, нет API-функции, которая сделала бы это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...