不确定这是最佳做法,但也许您可以将FocusListener放在要验证的组件上……在调用事件时调用验证,然后在不希望移动焦点时使用then事件因为验证失败?
以后编辑:
至少对于Java
8(我没有检查早期版本),此解决方案将无法工作,因为FocusEvent似乎不是低级事件。因此,它不能被消耗。请参见方法AWTEvent.consume()

不确定这是最佳做法,但也许您可以将FocusListener放在要验证的组件上……在调用事件时调用验证,然后在不希望移动焦点时使用then事件因为验证失败?
以后编辑:
至少对于Java
8(我没有检查早期版本),此解决方案将无法工作,因为FocusEvent似乎不是低级事件。因此,它不能被消耗。请参见方法AWTEvent.consume()