Java requestInWindow 有时不起作用

标签 java swing focus invokelater

我在 Java 中遇到了 requestInWindow 的问题,当文本字段的容器变得可见时,我需要将注意力集中在文本字段上。

有时它可以工作,但有时 GUI 会因为操作系统操作而运行缓慢。例如,如果防病毒软件正在扫描计算机,程序的响应会有点慢。

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

所以我想知道,有没有一种方法可以完全确定现在 JTextField 可见,然后我们就可以在那时启动 requestInWindow 。我尝试了很多东西,例如 SwingUtilities.invokeLaterSwingWorker

如果您想知道我为什么需要这个,请查看 POS。用户没有时间移动鼠标试图将注意力集中在必须输入条形码或支付金额的字段上,他们所需要的只是让系统为他们做这些,他们所做的只是敲击键盘。

最佳答案

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

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

关于Java requestInWindow 有时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909033/

相关文章:

java - 由于鼠标事件无效,如何将第一个 JLabel 背景颜色分配给下一个 JLabel?

java - Spring Oauth 和登录成功时安全重定向到/login

java - 对 JComboBox 使用 setEditable() 时对齐会重置

java - 如何使用 XPATH 将标签列表从第一个滚动到最后一个?

java - @RestController 和@Component 之间的细微差别

java - 一次声明多个 swing 元素

java - 为什么删除后刷新JTable不起作用

focus - 在两个 ListView 中浏览并失去焦点

JavaFX HTMLEditor - 焦点 webView (TextArea)

javascript - 单击时强制将焦点保持在 anchor 上