如何找出当前具有焦点的对象

Tal*_*kir 28 java swing focus

我有几个TextField在我的Frame.我想知道TextField目前有哪些重点.我怎样才能找到这些信息?

Rob*_*Rob 32

JFrame.getFocusOwner()(继承自Window.getFocusOwner())应该返回对具有焦点的组件的引用.getMostRecentFocusOwner()也可能有意义.


Pet*_*eng 31

KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
Run Code Online (Sandbox Code Playgroud)

  • 比接受的答案要好得多,恕我直言,因为我可以从无法访问我实际使用的窗口的静态类中执行此操作,而且我不必遍历所有窗口。 (2认同)

pre*_*edi 5

您还可以监听键盘焦点管理器中适当的属性更改:

KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("focusOwner", new PropertyChangeListener() {
    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        System.out.println(evt.getNewValue());
    }
});
Run Code Online (Sandbox Code Playgroud)

当您与 Swing 组件交互时,此输出焦点所有者,并且对于一般调试焦点问题很有用。