这里的基本思想是:的Java窗口缓冲击键,直到用户用鼠标点击
有一个java窗口(主)打开另一个Java窗口(子)。当创建了孩子,初始化的一部分设置在子窗口中相应的文本字段中的焦点:
childTextField.requestFocusInWindow();
childTextField.setCaretPosition(0);
孩子一般是一个严重的按键通过命令行接口类型打开。当窗口被请求时,90%的时间,焦点正确地进入子窗口文本字段,并且用户可以在框中键入。如果打开孩子的命令被发送(按下回车键),并且用户在新窗口创建之前立即开始输入,则文本会被正确缓冲并在窗口打开后显示在新文本框中。
但是,每过一段时间,当用户请求的子窗口中打开,然后开始打字,他们的文本不显示在文本框中。只有在字段中用鼠标点击后,才会显示他们输入的文本。这就像它被存储在某个地方,直到点击它们才会出现。
真正令人沮丧的是,我似乎无法可靠地重现问题。它绝对会发生,但不够经常地调试很好。
当然还有各种其他的魔力会在幕后,其中包括与服务器应用程序的通信,但我不相信它的相关。
任何想法或想法将非常感激。
没关系,那个几乎肯定是*是一个错误。我会尽早将焦点管理器或调用logger.info或类似的东西放到焦点管理器中,查看事件的真实情况,并浏览代码路径。可能性有一个意外的情况和不刷新的代码路径。 – 2008-12-14 18:40:25