Java 强制激活Jframe以获得对孩子的关注

Java 强制激活Jframe以获得对孩子的关注,java,swing,event-handling,jframe,Java,Swing,Event Handling,Jframe,我有一个问题,我坚持了大约3天,我读了很多关于我的问题的答案,但没有解决我的问题 描述 我有一个java应用程序,它有两个框架,主框架有一个按钮。一旦选择了一个,就会在主框架顶部打开一个新的小框架 在小框架上,我有文本字段,根据主框架上按下的按钮而变化 只有在开始时,我才初始化小框架,但在第一次使用它之后,我只需更改文本字段值即可 小框架有一个退出按钮,按下后,使用Jframe.toback()隐藏框架,单击按钮后,我使用Jframe.tofront()使其可见 问题 当我按下主框架上的一个按钮

我有一个问题,我坚持了大约3天,我读了很多关于我的问题的答案,但没有解决我的问题

描述

  • 我有一个java应用程序,它有两个框架,主框架有一个按钮。一旦选择了一个,就会在主框架顶部打开一个新的小框架

  • 在小框架上,我有文本字段,根据主框架上按下的按钮而变化

  • 只有在开始时,我才初始化小框架,但在第一次使用它之后,我只需更改文本字段值即可

  • 小框架有一个退出按钮,按下后,使用
    Jframe.toback()
    隐藏框架,单击按钮后,我使用
    Jframe.tofront()
    使其可见

  • 问题

    当我按下主框架上的一个按钮时,我希望为第一个文本字段授予焦点,我需要看到它上的鼠标光标
    当我第一次启动时,焦点被授予该文本字段,当我按下退出按钮并选择另一个按钮时,它工作,但有时当我快速按下时,焦点未被授予,帧未激活。
    我需要一种方法来强制小框架一旦打开就被激活

    当在主框架上单击其中一个按钮时,我会更改小框架中的数据并运行以下代码:

    SwingUtilities.invokeLater(new Runnable() {
    
            public void run() {
                logger.debug("isDisplayable() + isFocusable() + isVisible());
                    idField.grabFocus();
    
            }
        });
    
    第一次启动应用程序时,一切正常,因为我在框架可见之前使用了方法
    requestFocusInWindow()

    在这之后,上面的代码并不总是有效的,在我看来,这就像一个竞赛条件。
    单击按钮激活后,如何强制小帧获得焦点


    感谢您的帮助。

    1)请参阅2)如需更快获得更好的帮助,请发布或。@andrewthomson这不是代码问题,我需要为要激活的框架触发一个事件,使其子面板子面板能够请求焦点并获得焦点。“这不是代码问题”我说过了吗?但是既然你说没有,如果没有问题,你在这里干什么?”“问题解决”是这个问答网站允许的99%。顺便说一句-由于没有MCVE/SSCCE,投票结束。@AndrewThompson我发布了这个问题,我需要一个帮助,告诉我如何在调用tofront java方法时激活一个框架,代码非常复杂,我非常确定它与代码无关,而不是与我之前所说的方式。“我非常确定它与代码无关”同样,我敢肯定,除非您提供可运行的代码,否则我不会费心去研究它。但是,嘿,这是你的难题,我只对解决这个问题感兴趣,这不是问题。现在有很多人请求帮助,所以我会让你在我帮助他们的时候考虑一下。