调用 Component.requestFocus() 和手动聚焦组件(例如,使用键盘或鼠标聚焦它)都会触发 FocusEvent.FOCUS_GAINED。
我正在听 AWT 事件。
我的问题是:
我怎么知道 FocusEvent.FOCUS_GAINED 事件是通过调用 Component.requestFocus() 还是通过鼠标/键盘手动关注它?
当您使用 requestFocus 时,您会尝试将注意力集中在该组件上,但要关注文档
http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocus()
最好使用 requestFocusInWindow(boolean) http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow(boolean)
要检查组件是否获得焦点,您必须实现 FocusListener 并覆盖以下方法
public void focusGained(FocusEvent e) {
displayMessage("Focus gained", e);
}
public void focusLost(FocusEvent e) {
displayMessage("Focus lost", e);
}