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

时间:2017-03-12 10:54:51

标签: java swing event-handling jframe

我有一个问题,我被困了大约3天,我已经阅读了很多关于我的问题的答案,但没有解决我的问题。

详细描述

  1. 我有java应用程序,它有两个框架,主框架有一个按钮。选择一个后,将在主框架顶部打开一个新的小框架。

  2. 在小框架上我有文本字段,根据按在主框架上的按钮而改变。

  3. 仅在开始时我初始化小框架,但是在我第一次使用它之后只需更改文本字段值

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

  5. 问题

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

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

    SwingUtilities.invokeLater(new Runnable() {
    
            public void run() {
                logger.debug("isDisplayable() + isFocusable() + isVisible());
                    idField.grabFocus();
    
            }
        });
    

    我第一次启动应用程序时一切正常,因为我在框架变得可见之前使用方法requestFocusInWindow()
    在那之后上面的代码并不总是有效,在我看来就像竞争条件。
    一旦点击一个按钮,如何强制小帧增益聚焦?

    感谢您的帮助。

0 个答案:

没有答案