如何在JavaFX中捕获单击或双击窗口标题



众所周知,当用户双击窗口标题栏时,该窗口将被调整为完全可用的屏幕大小。至少我在Mac操作系统中看到过这种情况。知道如何捕捉这一事件吗?我应该在代码中听什么,这样我就知道用户已经单次或双击了窗口标题?

不要试图直接拦截与窗口装饰的交互

不要尝试使用点击。处理由于键盘或窗口装饰交互而导致的状态更改在操作系统之间有所不同,并且无论如何都不是JavaFX函数。

改用阶段属性和API

阶段具有最大化属性(并图标化(,请侦听相关属性的更改。类似地,还有一种全屏模式,它有点不同(请参阅Stage Java文档(。

创建自己的窗户装饰

如果你真的想要完全控制,你可以使用未装饰的舞台风格,并在JavaFX中添加你自己的装饰来处理基本的窗口系统功能。这样,很多装饰功能都可以由您的应用程序内部处理,但我真的不建议这样做。有一个名为Uncorator的旧项目,如果你想走这条路,它会帮助你完成这项工作(我不建议你自己编码(。

正如@jewelsea在评论中提到的那样,捕捉点击量是个坏主意。这个问题的目的是想知道为什么会有这种行为。经过研究,我发现这是Oracle已经列出的一个错误-请查看以下内容:双击标题栏时,每个窗口都会呈现全屏高度和宽度(最大化(,再次双击标题栏应该会恢复到以前的大小。这在JDK8之外是不起作用的,这是我从这个链接中了解到的。然而,在macOS Monterey 12.1(OpenJDK 17(上,双击标题栏时,窗口假设最大化,但再次双击时无法返回到以前的大小。

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8232812

最新更新