0

调用 Component.requestFocus() 和手动聚焦组件(例如,使用键盘或鼠标聚焦它)都会触发 FocusEvent.FOCUS_GAINED。

我正在听 AWT 事件。

我的问题是:

我怎么知道 FocusEvent.FOCUS_GAINED 事件是通过调用 Component.requestFocus() 还是通过鼠标/键盘手动关注它?

4

1 回答 1

1

当您使用 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);
}
于 2013-10-16T07:30:27.943 回答