Качание фокуса потерял входной верификатор - PullRequest
2 голосов
/ 25 августа 2011

У меня есть рамка с некоторыми JTextFields. Когда пользователь выходит из JTextField, я выполняю настраиваемую логику в FocusTraversalPolicy, которая устанавливает некоторые свойства и на их основе FocusTraversalPolicy решает, куда направить фокус дальше. Пока все хорошо.

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

Теперь проблема и вопрос: если пользователь покидает поле мышью, InputVerifier сработает и все будет хорошо. Но если пользователь нажмет TAB, сработают и FocusTraversalPolicy, и InputVerifier, и пользовательская логика будет выполнена дважды, чего я не хочу. Как я могу обнаружить в InputVerifier, что TAB уже нажата, и ничего не выполнять? Я хочу выполнить пользовательскую логику в InputVerifier только тогда, когда поле оставлено с помощью мыши. Или есть лучшее решение?

Надеюсь, мой вопрос ясен.

С уважением, Петар

1 Ответ

2 голосов
/ 25 августа 2011

Я закончил тем, что установил флаг boolean из FocusTraversalPolicy, если выполняется пользовательская логика . Тогда в InputVerifier, если он уже выполнен, я не выполню его снова. Затем я сбросил флажок.

...