java - 如何检测用户是否单击窗口标题栏或 Java 中窗口边框的任何其他部分

标签 java swing

我已经使用 Swing Popup 类实现了一个弹出式数字小键盘。我有一个与 JTextField 关联的按钮,当用户单击它时打开数字小键盘,然后当/如果 JTextField 失去焦点时 Popup 关闭。它通常运行良好,除了偶尔我会在 Popup 隐藏后得到“遗留”的工件。有时,伪像是 Popup 中显示的组件的图像,但更常见的是,它是某种“黑洞”,它掩盖了 Popup 所在屏幕同一区域中显示的任何其他内容,这只能通过关闭应用程序和 JVM 来补救。

问题很难重现,但当用户在弹出窗口打开时操作基本窗口(例如移动或调整其大小)时,它似乎会出现。我的想法是在发生类似情况时简单地隐藏 Popup,我可以结合使用 WindowListener 和 ComponentListener。但是,我想更进一步,一旦用户点击窗口标题栏或其框架的另一部分,甚至在他们移动、调整大小或图标化之前,就隐藏弹出窗口。 JComboBox 弹出窗口实际上就是这样工作的。但是,我一直找不到任何一种机制可以通知我用户单击了窗口标题栏。我查看了 JComboBox 和相关代码,但也无法从中弄清楚它是如何发挥这种魔力的。我可以使用任何其他类型的监听器来获取此类通知吗?

最佳答案

I have implemented a pop-up numeric keypad using the Swing Popup class.

我们会在您发布问题时发布您的代码来演示实现和问题。

我不知道你在做什么,但你可以使用 JPopupMenu。当您单击没有 FocusListener 或任何其他逻辑的框架标题栏时,这将关闭。

关于java - 如何检测用户是否单击窗口标题栏或 Java 中窗口边框的任何其他部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810491/

相关文章:

java - Java中有单键多值数据结构吗?

java - 在 Restassured Api 测试中,当我运行代码时,为什么在 g=truck 之前添加 "&"而不是 "; "

java - 绘制形状时 JPanel 中 Canvas 的清除按钮

java 多级可滚动弹出菜单

java - Spring Rest 客户端实现 : Could not extract response: no suitable HttpMessageConverter found for response type with xstreamMarshaller

java - 如何为两个目录设置java -classpath?

java - 输出显示零而不是 23(正确的输出)。

java - 在主屏幕上播放音乐

java - 未经检查或不安全的操作。数组到 JList

java - 单击按钮后打开一个新的 JFrame 并关闭先前的 JFrame