macos - 应用程序窗口可见后的 JavaFX 事件
问题描述
我需要执行一些本机代码来与 macOS 菜单栏进行交互,最好是在它初始化后立即执行。恕我直言,在 JavaFX 应用程序窗口变得可见之后是个好时机。
从文档中,我认为Window.onShown
应该这样做:
在窗口显示后立即调用。
但情况似乎并非如此。将断点放入 的事件处理程序时Window.onShown
,窗口尚不可见。不幸的是,此时 macOS 菜单栏尚未完全初始化,因此我对菜单栏所做的所有更改都将在稍后被 JavaFX 的默认菜单栏覆盖。
目前,我只是在WindowEvent.WINDOW_SHOWN
发送后使用 1 秒的延迟,但这似乎不是一个好的解决方案。那么有没有人对如何可靠地确定窗口何时实际可见或所有初始化完成有更好的想法?
解决方案
如果您在onShown
方法中设置断点,问题可能只是创建了窗口,但由于调试器而阻塞了可视化。
如果不是这种情况,您可以尝试使用类的isShowing方法创建一个Thread
仅检查窗口可见性的新窗口。Window
这应该比在onShown
调用方法后等待一秒钟要快。
推荐阅读
- php - Cakephp3 使用 Josegonzalez/Upload.Upload 生成上传缩略图
- android - 如何将原始资源添加到 react-native 本机 android 库
- flutter - 是否可以更改动画生成的值的数量?
- excel - 将可变命名范围作为公式参数传递
- ms-word - 当 Word 加载项在我自己的设置上运行时,如何诊断验证失败?
- c# - Scrollviewer 自己向下滚动
- javascript - 使用 SweetAlert2,如何通过 Toast 警报在不同的行中获取标题和文本?
- css - 是否可以在块元素的边缘注入背景属性?
- google-cloud-functions - 谷歌云功能“总是”可以通过 http 获得吗?
- bash - Bash - 选择目录中的唯一文件