我在Java中遇到requestInWindow
的问题,当容器变得可见时,我需要关注文本字段。
它有时会起作用,但是有些时候因为os操作而导致gui运行缓慢。例如,如果防病毒软件正在扫描计算机,则程序响应速度会有点慢。
这就是这种情况。如果操作系统没有做任何重的事情,requestInWindow
工作正常,否则不行。
所以我想知道,有没有办法绝对确定现在JTextField
是可见的,那么我们可以在那一刻开始requestInWindow
。我尝试了许多内容,例如SwingUtilities.invokeLater
和SwingWorker
。
如果您想知道我为什么需要这个,请查看POS。用户没有时间在鼠标周围移动,试图专注于他们必须输入条形码或支付金额的字段,他们所需要的只是让系统为他们做这些,他们所做的只是按键盘。
答案 0 :(得分:1)
在您描述的所有情况下都没有对此进行测试,但是如果您想在窗口可见之前指定具有焦点的组件,那么您可以尝试使用Dialog Focus中的RequestFocusListener
方法。
我不明白为什么慢速运行的计算机会导致问题。只要你确保所有代码都在EDT上执行就应该有效。