gpt4 book ai didi

java - 如何在不窃取焦点的情况下显示 JPopupMenu?

转载 作者:行者123 更新时间:2023-11-30 07:00:42 27 4
gpt4 key购买 nike

我正在用 Java Swing 编写一个程序,在这个程序中会有一个搜索栏(这将是一个 JTextField),当在此字段中输入内容时,我想直接在弹出菜单中显示搜索结果在搜索栏下方,就像谷歌一样。我不必实际用搜索结果填充菜单(我目前有一个带有固定项目的测试菜单),我遇到了这样一个问题,即每次在字段中输入一个新字符时,焦点就会从字段中移开,到弹出菜单上。我正在使用

show(Component invoker, int x, int y)

显示菜单,调用者是文本字段或包含框。正如我所说,每次调用此函数时,弹出菜单都会将焦点从文本框上移开,这是一个大问题。除了使用这种显示方法,我还可以使用这些方法:

setLocation(int x, int y)
setVisible(boolean b)

但是,如果没有调用程序,弹出菜单不会相对于搜索栏显示,当我使用 setInvoker(Component invoker) 时,我遇到了与 show 方法相同的问题。我无法在初始化期间设置调用程序,因为那时调用程序不可见。那么,如何在不将焦点从搜索文本字段移开的情况下使用调用程序创建此 popupMenu?还是有更好的方法来完成我想要完成的事情?

最佳答案

您是否尝试过requestFocusInWindow()?我认为您需要将焦点返回到弹出菜单代码末尾的搜索文本字段。我假设您有一些代码来创建弹出菜单。将 searchTextField.requestFocusInWindow() 添加到此代码的末尾。如果这没有帮助,那么我需要更多信息。更多代码会有所帮助。

关于java - 如何在不窃取焦点的情况下显示 JPopupMenu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30338240/

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