You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 24.04下JavaFX 21.0.5应用Stage位置设置异常求助

JavaFX 21 Ubuntu 下 Stage 位置异常的解决建议

针对你遇到的 JavaFX 21.0.5 在 Ubuntu 24.04(X11)下 Stage 位置频繁跑到(0,0)的问题,给你几个可行的排查和解决方向:

  • 确保主窗口(Owner)已初始化并显示
    你的代码里只创建了主窗口 primaryStage 但从未显示它,在 X11 窗口管理器环境下,未激活的主窗口可能导致子窗口的位置设置失效。可以先将主窗口透明显示再关闭,避免视觉干扰:

    @Override
    public void start(Stage primaryStage) {
        // 透明显示主窗口,确保窗口管理器识别到它
        primaryStage.setOpacity(0);
        primaryStage.show();
    
        Stage stage = new Stage();
        stage.initOwner(primaryStage);
        stage.setTitle("Test App");
        // 添加空Scene,确保Stage底层初始化完整
        stage.setScene(new Scene(new Group()));
    
        stage.setWidth(200);
        stage.setHeight(100);
        stage.setX(500);
        stage.setY(500);
    
        stage.showAndWait();
    
        primaryStage.close();
    }
    
  • 延迟位置设置到窗口显示之后
    可能 X11 环境下,窗口底层初始化未完成时设置位置会被覆盖,用 Platform.runLater 延迟到 UI 线程队列执行位置设置:

    stage.show();
    Platform.runLater(() -> {
        stage.setX(500);
        stage.setY(500);
    });
    stage.showAndWait();
    
  • 升级到 JavaFX 21 最新补丁版本
    你当前用的是 21.0.5,尝试升级到 21.0.6 或更高补丁版本,这类平台相关的窗口位置问题很可能已经被官方修复。

  • 给 Stage 添加 Scene 后再设置参数
    你的测试代码里没有给 Stage 设置 Scene,虽然 JavaFX 允许,但在不同系统版本下,无 Scene 的 Stage 初始化逻辑可能存在差异,添加一个空 Scene 能让窗口初始化流程更完整,避免位置设置失效。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:15:06