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

JavaFX:调用Window.sizeToScene()后如何保持窗口居中于原位置?

保持窗口中心不变的尺寸调整方法

当然有办法实现这个需求!核心思路很简单:先记录下调整前窗口的中心坐标,调用sizeToScene()完成尺寸调整后,再重新计算窗口的左上角位置,让窗口中心回到原来的点。

具体实现步骤(JavaFX示例)

  1. 先获取当前窗口的中心坐标
    // 假设window是你的窗口实例
    double originalCenterX = window.getX() + window.getWidth() / 2;
    double originalCenterY = window.getY() + window.getHeight() / 2;
    
  2. 调用sizeToScene()调整窗口尺寸
    window.sizeToScene();
    
  3. 计算新的窗口左上角位置,确保中心不变
    // 根据新的宽高,反推左上角坐标
    double newX = originalCenterX - window.getWidth() / 2;
    double newY = originalCenterY - window.getHeight() / 2;
    window.setX(newX);
    window.setY(newY);
    

封装成复用方法

如果需要多次使用,可以把逻辑封装成一个工具方法:

public void resizeToSceneAndKeepCenter(Window window) {
    // 记录原始中心
    double centerX = window.getX() + window.getWidth() / 2;
    double centerY = window.getY() + window.getHeight() / 2;
    
    // 调整尺寸
    window.sizeToScene();
    
    // 重置位置到原中心
    window.setX(centerX - window.getWidth() / 2);
    window.setY(centerY - window.getHeight() / 2);
}

这个方法的逻辑很直观:因为sizeToScene()只会修改窗口的宽高,不会改变左上角的位置,所以我们通过“先记中心,后移位置”的方式,就能实现尺寸自适应场景的同时保持窗口中心固定的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:51:10