我在Java中的requestInWindow遇到问题,当它的容器可见时,我需要关注一个文本字段。

有时它可以工作,但是有时候由于操作系统的操作,GUI会运行缓慢。例如,如果防病毒软件正在扫描计算机,则程序响应速度会变慢。

这里就是这种情况。如果操作系统没有做任何繁重的工作,则requestInWindow可以正常工作,否则就不行。

所以我想知道,有一种方法可以绝对确定现在JTextField是可见的,然后我们可以在此时加入requestInWindow。我尝试了很多类似SwingUtilities.invokeLaterSwingWorker的方法。

如果您想知道为什么我需要这样做,请查看POS。用户没有时间在鼠标上移动,试图集中精力于必须输入条形码或支付金额的领域,他们所需要的只是让系统为他们完成操作,而他们所要做的只是敲击键盘。

最佳答案

尚未在您描述的所有情况下对此进行测试,但是如果要在窗口可见之前指定具有焦点的组件,则可以尝试使用Dialog Focus中的RequestFocusListener方法。

我不明白为什么运行缓慢的计算机会引起问题。只要您确保在EDT上执行的所有代码都可以正常工作。

07-25 22:46