Не поддерживается механизмом InputVerifier.И, вероятно, не должно быть на этом уровне детализации, потому что это может привести к фокусировке на d с неверными данными в a.
Предположим, InputVerifier, который знает противоположный компонент (то есть потенциальный следующий focusOwner) и его данные недействительны
- , в shouldYieldFocus он проверяет противоположное
- дляb позволяет передавать
- перенесенный фокус на b
- переводить фокус на d (разрешено)
(тот же общий эффект, что и по предложению Роба)Кстати, за исключением того, что InputVerifier a никогда не запускается.
В целом, встроенная поддержка валидации не очень сильна - много работы осталось за разработчиком.Некоторые вещи, которые вам нужно было бы сделать
- , могут использовать InputVerifiers на уровне каждого компонента для фактической проверки, еслиYYYLE возвращает true всегда
- имеет какой-то InputVerifierController, который проверяет, является лиФокус направляется «наружу»
- , если выход «наружу» с какими-либо недопустимыми данными где-либо «внутри» предотвращает передачу
Использование такой инфраструктуры, как fi Проверка JGoodies может быть проще.