Component.requestFocus和手动焦点之间有什么区别

时间:2013-10-16 07:27:04

标签: java swing events awt

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

我正在听AWT赛事。

我的问题是:

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

1 个答案:

答案 0 :(得分: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);
}