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);//设置窗口居中显示

第二种方法
     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);

03、第三种方法,是jdk1.4之后提供的方法
     setLocationRelativeTo(othercomponent);
    这种方法是设定一个窗口的相对于另外一个窗口的位置(一般是居中于父窗口的中间),如果为null则窗口就居于屏幕的中央。

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

关注我的新浪微博

java swing窗口放置屏幕中央问题思考的更多相关文章

  1. Java基础之创建窗口——使窗口在屏幕居中(TryWindow2/TryWindow3)

    控制台程序. 1.使用ToolKit对象在屏幕的中心显示窗口,将窗口的宽度和高度设置为屏幕的一半: import javax.swing.JFrame; import javax.swing.Swin ...

  2. Java Swing 窗体屏幕居中

    Java开发桌面程序用AWT或SWING,可以用设置主窗口位置,使主窗口居中一般使用下面的方法: 01.第一种方法              int windowWidth = frame.getWi ...

  3. winfrom 窗口起始位置为屏幕中央

    窗口起始位置为屏幕中央 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 获取鼠标触发事件光标位置 t ...

  4. Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现

    Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现 1. 建立悬浮窗口引用代码 1 1.1. 定义悬浮窗口,设置this主窗口引用,是为了在悬浮窗口中 ...

  5. atitit.窗口静听esc退出本窗口java swing c# .net php

    atitit.窗口静听esc退出本窗口java swing c# .net php 1. 监听esc  按键 1 1.1. 监听一个组件 1 1.2. 监听加在form上 1 2. 关闭窗口 2 1. ...

  6. C# WinForm设置窗口无边框、窗口可移动、窗口显示在屏幕中央、控件去边框

    1)窗口去除边框 在组件属性中FormBorderStyle设为None 2)窗口随着鼠标移动而动 添加引用using System.Runtime.InteropServices; 在初始化控件{I ...

  7. Java Swing 使用总结(转载)

    随笔转载自:此去经年ぢ 地址:http://www.cnblogs.com/FLFL/p/5369756.html 1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在 ...

  8. Java Swing intro

    Java Swing intro 如果有Android app开发经验,快速上手Swing不是问题.UI方面有相似的地方. 简单的几行代码就能抛出一个框框,记录一下操作过程 1.先显示一个框框 Era ...

  9. Java Swing实现一个简单而优美的记事本( 较详细注释 )

    Java Swing实现具有基本功能的记事本 目前实现了: 文件 新建 打开 保存 退出前保存询问 编辑 剪切 复制 粘贴 清除 撤销 格式 字体选择 字体颜色选择 帮助 关于 (样式采用了css与h ...

随机推荐

  1. Java笔记(三)……基础语法

    关键字 标识符 在程序中自定义的一些名称 由26个英文字母大小写,数字:0-9,符号:_ $组成 定义合法标识符规则: 数字不可以开头. 不可以使用关键字. Java中严格区分大小写. 注意:在起名字 ...

  2. Storm系列(十九)普通事务ITransactionalSpout及示例

    普通事务API详解 1   _curtxid:" + _curtxid 46                      + ",_tx.getTransactionId():&qu ...

  3. Hadoop学习记录(3)|HDFS API 操作|RPC调用

    HDFS的API操作 URL方式访问 package hdfs; import java.io.IOException; import java.io.InputStream; import java ...

  4. HDOJ-ACM1006(JAVA)

    题意:输入一个角度degree,求出一天中时针分针秒针之间的角度大于这个角度degree的时间占一天总时间的比例 因此输入是0-120度, 输出比例,保留三位小数,-1为终止 暂时没想出来如何做这道题 ...

  5. Trie树模板~~~

    * + ; ; // 字母表为全体小写字母的Trie struct Trie { int ch[maxnode][sigma_size]; int val[maxnode]; int sz; // 结 ...

  6. linux和MAC下静态库.a文件合并

    这两天开发群了讨论了一个文体,如何合并众多的.a文件. 有人给了建议,使用ar 解.a,生成.o.然后合并所有的.o文件. 我在MAC OS下尝试了一下. 正好赶上编译了ffmpeg的IOS armv ...

  7. Yii Listview 更新及搜索

    更新: http://my.oschina.net/shixiaobao17145/blog/130992 http://www.yiiframework.com/forum/index.php/to ...

  8. 教程-Delphi调用C# WEBSERVICE(二)

    第二步:将webserivce的WSDL导入到该dll工程中,如何导,方法至少有两种,我说简单的一种:  file->new->other->WebService->WSDL ...

  9. light oj 1354 - IP Checking

    1354 - IP Checking   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB An I ...

  10. poj 3984 迷宫问题【bfs+路径记录】

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10103   Accepted: 6005 Description ...