JavaFX:调用Window.sizeToScene()后如何保持窗口居中于原位置?
保持窗口中心不变的尺寸调整方法
当然有办法实现这个需求!核心思路很简单:先记录下调整前窗口的中心坐标,调用sizeToScene()完成尺寸调整后,再重新计算窗口的左上角位置,让窗口中心回到原来的点。
具体实现步骤(JavaFX示例)
- 先获取当前窗口的中心坐标
// 假设window是你的窗口实例 double originalCenterX = window.getX() + window.getWidth() / 2; double originalCenterY = window.getY() + window.getHeight() / 2; - 调用
sizeToScene()调整窗口尺寸window.sizeToScene(); - 计算新的窗口左上角位置,确保中心不变
// 根据新的宽高,反推左上角坐标 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
相关产品推荐
相关产品推荐

