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