java如何找出当前有焦点的对象 1 周,4 日 Questions & Answers 46430 我的TextField中有几个Frame。我想知道哪个TextField目前有焦点。我怎样才能找到这些信息
# 1 楼答案 每个JComponent都有一个hasFocus方法,可以用来检查它是否有焦点。 但是,这已经改变了,现在您应该使用isFocusOwner 因此,运行框架中的所有文本字段,并通过调用该方法检查每个字段是否为isFocusOwner 您还可以通过帧获取焦点所有者
# 2 楼答案 您还可以在键盘焦点管理器中侦听相应的属性更改: KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("focusOwner", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { System.out.println(evt.getNewValue()); } }); 当您与Swing组件交互时,这会输出焦点所有者,这对于调试焦点问题非常有用
# 1 楼答案
每个JComponent都有一个hasFocus方法,可以用来检查它是否有焦点。 但是,这已经改变了,现在您应该使用isFocusOwner
因此,运行框架中的所有文本字段,并通过调用该方法检查每个字段是否为isFocusOwner
您还可以通过帧获取焦点所有者
# 2 楼答案
您还可以在键盘焦点管理器中侦听相应的属性更改:
当您与Swing组件交互时,这会输出焦点所有者,这对于调试焦点问题非常有用
# 3 楼答案
JFrame.getFocusOwner()
(继承自^{getMostRecentFocusOwner()
可能也有兴趣# 4 楼答案
还可以看看javax.swing.FocusManager
# 5 楼答案
# 6 楼答案
getFocusOwner()将返回当前聚焦的子组件
但是您必须检查它是否是JTextField。其他组件,如按钮,如果它们也存在于您的帧中,则可能会被聚焦