Кодовое имя One Focus и удаление компонентов - PullRequest
1 голос
/ 08 февраля 2020

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

Это работает, но у меня есть небольшая проблема в том, что следующий компонент в контейнере также получает фокус, и поэтому мой код удаляет / заменяет это также. Я предполагаю, что это потому, что при перерисовке этот компонент теперь занимает то же место, где первоначально происходил отвод.

Если последний компонент в контейнере был первоначально выбран, то компоненту замены самому уделяется внимание, и поэтому удаляется и заменяется.

Любые идеи о том, что я, возможно, неправильно кодировал или что я могу сделать, чтобы избежать второго вызова focusGained?

1 Ответ

0 голосов
/ 09 февраля 2020

Я сомневаюсь, что вы сделали что-то не так. Если мы удалим компонент с фокусом, мы найдем следующий доступный. Метод replace не учитывает фокус, но не может предоставить фокус компоненту, который здесь еще не существует, поэтому он предоставляется следующему компоненту. Не много здесь делать.

Вы можете requstFocus() после завершения перехода исправить заказ вручную.

...