背景
就开发图形界面,遇到窗口居中,就原方法,是先获取屏幕的长和宽,然后在除以2,
还有一种就是在初始化JFrame时候,写上一句
setLocationRelativeTo(null);
这样就会使窗口居中,但要注意顺序,应该是先定义窗口大小,在写上这句话!
在看下api中的说明
public void setLocationRelativeTo(Component c)根据以下情况设置窗口相对于指定组件的位置。 下面提到的目标屏幕是在调用setLocationRelativeTo方法之后应该放置窗口的屏幕。 如果组件是null ,或GraphicsConfiguration与此组件关联是null时,窗口被放置在屏幕的中心。 中心点可以使用GraphicsEnvironment.getCenterPoint方法获得。 如果组件不是null ,但它当前没有显示,则该窗口将放置在与此组件GraphicsConfiguration GraphicsConfiguration定义的目标屏幕的中心。 如果组件不是null并显示在屏幕上,则窗口的位置使得窗口的中心与组件的中心重合。 如果屏幕配置不允许窗口从一个屏幕移动到另一个屏幕,则窗口仅被放置在根据上述条件确定的位置,并且其GraphicsConfiguration未更改。 注意 :如果窗口的下边缘超出屏幕,则窗口放置在离屏幕中心最近的Component侧。 因此,如果组件位于屏幕的右侧,窗口将放置在左侧,反之亦然。 如果在计算了窗口位置之后,窗口的上,左或右边缘超出了屏幕,则窗口位于窗口的上,左或右边缘与屏幕的相应边缘。 如果窗口的左边缘和右边缘都不在屏幕之外,窗口将放置在屏幕的左侧。 如果顶部和底部边缘都超出屏幕,则会发生类似的放置。 在这种情况下,窗口被放置在屏幕的顶部。 该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window对象被放置并且以与桌面设置密切对应的方式被放大。 参数 c - 确定窗口位置的组件