gpt4 book ai didi

java - 如何以编程方式聚焦 JDialog?

转载 作者:行者123 更新时间:2023-12-02 06:45:54 26 4
gpt4 key购买 nike

我在这里读过一些类似的帖子,但它们对我没有帮助。我的 JDialog 未装饰且最初无法聚焦:

super(connectionsTree.getMainFrame(), "", false);
super.setUndecorated(true);
super.setFocusableWindowState(false);
super.setFocusable(false);
super.getContentPane().add(scrollPane);
super.pack();

现在,每当此对话框可见并且用户使用空格按钮时,我必须使 JDialog 聚焦,以便它接收按键事件。我这样做:

if (keyCode == 32) {
tooltip().setFocusable(true);
tooltip().setFocusableWindowState(true);
tooltip().requestFocusInWindow();
}

这段代码使我的 JDialog 可聚焦,但 JDialog 没有聚焦,并且它无法捕获关键事件。tooltip() 方法仅返回我的 JDialog 的实例。

如何让我的 JDialog 以编程方式接收焦点?

谢谢!

最佳答案

根据documentation仅当顶级父组件是焦点所有者时,才会将 requestFocusInWindow() 焦点授予 Component。因此,如果您的主窗口没有焦点,这将不起作用。您应该使用 Component#requestFocus() 来代替。来自 Component#requestFocus() 描述

Requests that this Component get the input focus, and that this Component's top-level ancestor become the focused Window.

关于java - 如何以编程方式聚焦 JDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com