有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    每个JComponent都有一个hasFocus方法,可以用来检查它是否有焦点。 但是,这已经改变了,现在您应该使用isFocusOwner

    因此,运行框架中的所有文本字段,并通过调用该方法检查每个字段是否为isFocusOwner

    您还可以通过帧获取焦点所有者

  2. # 2 楼答案

    您还可以在键盘焦点管理器中侦听相应的属性更改:

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

    当您与Swing组件交互时,这会输出焦点所有者,这对于调试焦点问题非常有用

  3. # 3 楼答案

    JFrame.getFocusOwner()(继承自^{})应该返回对具有焦点的组件的引用getMostRecentFocusOwner()可能也有兴趣

  4. # 5 楼答案

    KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
    
  5. # 6 楼答案

    getFocusOwner()将返回当前聚焦的子组件

    但是您必须检查它是否是JTextField。其他组件,如按钮,如果它们也存在于您的帧中,则可能会被聚焦