我在Java中的requestInWindow
遇到问题,当它的容器可见时,我需要关注一个文本字段。
有时它可以工作,但是有时候由于操作系统的操作,GUI会运行缓慢。例如,如果防病毒软件正在扫描计算机,则程序响应速度会变慢。
这里就是这种情况。如果操作系统没有做任何繁重的工作,则requestInWindow
可以正常工作,否则就不行。
所以我想知道,有一种方法可以绝对确定现在JTextField
是可见的,然后我们可以在此时加入requestInWindow
。我尝试了很多类似SwingUtilities.invokeLater
和SwingWorker
的方法。
如果您想知道为什么我需要这样做,请查看POS。用户没有时间在鼠标上移动,试图集中精力于必须输入条形码或支付金额的领域,他们所需要的只是让系统为他们完成操作,而他们所要做的只是敲击键盘。
最佳答案
尚未在您描述的所有情况下对此进行测试,但是如果要在窗口可见之前指定具有焦点的组件,则可以尝试使用Dialog Focus中的RequestFocusListener
方法。
我不明白为什么运行缓慢的计算机会引起问题。只要您确保在EDT上执行的所有代码都可以正常工作。