В какой ситуации JComponent запрашивает фокус?Как узнать, какой компонент на самом деле является владельцем фокуса? - PullRequest
1 голос
/ 14 марта 2011

В моем приложении есть ошибка, которую я не могу найти.

У меня есть несколько выбираемых и изменяемых размеров JPanel, которые отображают границу при выборе.Для некоторых из них граница исчезает после их перемещения без видимой причины.Так как теперь я не нашел ошибку в моем приложении (нет другого компонента, который выбранный запрашивает или получает фокус), но я заметил, что когда мой выбранный компонент теряет фокус, JToolbar получает его.

Итак, мой вопрос в том, в каких ситуациях (возможно, с участием MouseEvents) компонент JToolbar запрашивает фокус?

В качестве альтернативы, есть ли способ отключить JToolbar для запроса фокуса или узнать, какойкомпонент является текущим владельцем фокуса?

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Я думаю, что трудно предотвратить получение фокуса.Например, на панели инструментов есть редактируемый JCombobox, когда фокус должен быть вне вашей панели.Я бы поиграл с FocusEvent, если public Component getOppositeComponent() вернет одного из дочерних элементов панели, граница должна остаться.

0 голосов
/ 21 марта 2011

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

...