我有一个问题,我被困了大约3天,我已经阅读了很多关于我的问题的答案,但没有解决我的问题。
详细描述
我有java应用程序,它有两个框架,主框架有一个按钮。选择一个后,将在主框架顶部打开一个新的小框架。
在小框架上我有文本字段,根据按在主框架上的按钮而改变。
仅在开始时我初始化小框架,但是在我第一次使用它之后只需更改文本字段值
小框架有一个退出按钮,一旦按下框架被Jframe.toback()
隐藏,单击一个按钮后我会使用Jframe.tofront()
使其可见。
问题
当我按下主框架上的按钮时,我希望为第一个文本字段授予焦点,我需要在其上看到鼠标光标。
当我第一次开始时,焦点被授予该文本字段,当我按下退出按钮并选择另一个按钮时,它可以正常工作,但有时当我非常快速地按下时,焦点未被授予且帧未被激活。
我需要一种方法来强制小框架在打开后被激活。
当在主框架上单击其中一个按钮时,我会更改小框架中的数据并运行此代码:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
logger.debug("isDisplayable() + isFocusable() + isVisible());
idField.grabFocus();
}
});
我第一次启动应用程序时一切正常,因为我在框架变得可见之前使用方法requestFocusInWindow()
。
在那之后上面的代码并不总是有效,在我看来就像竞争条件。
一旦点击一个按钮,如何强制小帧增益聚焦?
感谢您的帮助。