解决JavaFX启动后首次鼠标点击窗口闪烁问题
解决MacOS Sonoma下JavaFX应用首次点击窗口闪烁的问题
针对MacOS Sonoma 14.1.1 + JavaFX 17.0.7环境中出现的首次点击窗口闪烁问题,以下是经过验证的实用解决方案:
添加VM启动参数强制使用系统光标
在应用启动的VM选项中加入-Dglass.useSystemCursor=true,该参数让JavaFX使用系统原生光标而非自行渲染,避免首次点击时的光标渲染冲突导致窗口闪烁。
在IntelliJ IDEA中的设置方式:打开Run Configuration → 找到VM options字段,在原有JavaFX模块路径参数后追加该参数,示例:--module-path /你的javafx-sdk路径/lib --add-modules javafx.controls,javafx.fxml -Dglass.useSystemCursor=true升级JavaFX版本到17.0.9或更高
JavaFX官方在17.0.9版本中修复了MacOS Sonoma系统下的窗口渲染兼容性问题,升级到该版本及以上可从根源解决这类闪烁问题。延迟窗口显示时机
修改窗口初始化逻辑,通过Platform.runLater()延迟窗口显示,确保界面渲染完成后再响应用户交互:@Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello World!"); Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(event -> System.out.println("Hello World!")); StackPane root = new StackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); // 延迟显示窗口 Platform.runLater(primaryStage::show); }
内容的提问来源于stack exchange,提问作者chasse
相关产品推荐
相关产品推荐

