java swing窗口放置屏幕中央问题思考

之前老是尝试各类方法都没有能把组件放到屏幕中央,只能用死办法,设置绝对坐标,但这样就失去了可移植性,并且繁琐.今天仔细思考了一番,终于被我找出问题所在.

注意如下部分红功的前提条件是:pack(),必须放在如下代码以前执行,不然pack()置于以后将会覆盖前面的位置设置,前面的代码就失效了.这就是一直折磨个人问题.

使主窗口居中通常使用下面的方法: 工具

第一种方法        
     int windowWidth = frame.getWidth();                     //得到窗口宽
     int windowHeight = frame.getHeight();                   //得到窗口高       
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();             //获取屏幕的尺寸
     int screenWidth = screenSize.width;                     //获取屏幕的宽
     int screenHeight = screenSize.height;                   //获取屏幕的高
     frame.setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口居中显示   this

第二种方法
     Toolkit kit = Toolkit.getDefaultToolkit();    // 定义工具包
     Dimension screenSize = kit.getScreenSize();   // 获取屏幕的尺寸
     int screenWidth = screenSize.width/2;         // 获取屏幕的宽
     int screenHeight = screenSize.height/2;       // 获取屏幕的高
     int height = this.getHeight();
     int width = this.getWidth();
     setLocation(screenWidth-width/2, screenHeight-height/2); spa

0三、第三种方法,是jdk1.4以后提供的方法
     setLocationRelativeTo(othercomponent);
    这种方法是设定一个窗口的相对于另一个窗口的位置(通常是居中于父窗口的中间),若是为null则窗口就居于屏幕的中央。 component

成功的前提条件是:pack(),必须放在如下代码以前执行,不然pack()置于以后将会覆盖前面的位置设置,

相关文章
相关标签/搜索