终于解决了用JAVA写窗口程序在不同的windows界面下的显示保持一致。

好像是两三年前的时候发现这个问题。

由于在windows经典界面与windows xp界面下,窗口的标题栏的高度是不一样的。

所以我们在用Java写GUI程序的时候,会遇到一个问题。

当我把一个JFrame显式的设为setSize(300,200);并且这个Container的Layout是null的时候,在windows经典界面和windows xp界面显示的时候是有差别的。因为windows xp界面下的标题栏比windows经典界面下的标题栏高了7个象素。

今天我终于找到了一个办法,可以不用去考试用户选择的是哪种windows界面,表现的结果都一样:

//先取得在windows经典模式下设置的宽与高

setSize(500,300);

int width=frame.getWidth();
   int height=frame.getHeight(); 
  
  frame.pack();   //这一行是最关键的一行
   int rootPane_Y=frame.getRootPane().getY();
  
   System.out.println("rootPane_Y:" + rootPane_Y);
  
   //windows经典模式下的标题栏高度是23,这里重新调整窗口的高度
   frame.setSize(width,height - 23 + rootPane_Y);

2007-04-17

时间: 2024-10-09 20:32:06

终于解决了用JAVA写窗口程序在不同的windows界面下的显示保持一致。的相关文章

Windows核心编程03-编写窗口程序的步骤

编写窗口程序的步骤: 1 定义WinMain函数 2 定义窗口处理函数(处理消息) 3 注册窗口类 4 创建窗口(在内存中创建窗口) 5显示窗口(根据内存的数据将窗口绘制出来) 6消息循环(提取/翻译/派发)消息 7消息处理 #include "windows.h" LRESULT WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam) { return DefWindowProc(hWnd,nMsg,wParam,lParam

如何实现程序的重新启动(windows环境下)

背景: 在游戏程序的开发中,经常会碰到这样的情况,运行游戏更新程序后需要重新启动更新程序,在游戏内修改视频等相关设置后需要重新启动游戏程序,这样的操作该如何实现呢? 解决方案: 一种解决方案是通过等待来启动新的程序,但是这样的实现方式在极端情况下会出现问题,假设某游戏程序每次在一个物理机上只允许启动一个进程,如果关闭旧的进程因为一些原因而造成延迟,那么启动新的进程时会失败,试想游戏更新程序结束后,提示玩家游戏将重启,而游戏并没有重启,这种体验是相当糟糕的. 另一种解决方案,为了保证程序A关闭后与

java写hdfs程序

1.hadoop默认临时数据文件是存储于Unix的tmp目录下(cd /tmp 包含hadoop-root等文件),如果不进行修改,linux系统重启后hadoop有可能出现不正常现象:故需要修改hadoop的临时文件存放目录2.vim core-site.xml 配置如下,然后重启hadoop集群,不要对namenode重新进行格式化操作修改datanode /var/hadoop/dfs/data/current 目录下VERSION文件的clusterid与namenode一致:然后启动集

Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试

在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 首先我们确定下我们安装的Ubuntu系统是否已经安装了java环境. 进入终端,敲入命令su,进入root模式(当然也可以省掉这一步),敲入命令java -version.如果看到这个界面,说明尚未安装Java环境, Ps:我们的课程中曾经讲过如何删除一个老的jdk,这里就略过不讲了. 继而,让我

解决XP“不是有效Win32程序” 不是改Platform toolset

背景 最近在写一个窗口程序,想在Windows XP上也能跑.先用vs 2015的App Wizard生成了一个实例窗口程序,按照网上大部分攻略,将 "Properties - General - Platform Toolset" 改为 “Visual Studio 2015 - Windows XP (v140_xp)” 后,编译并放到XP机上,可以运行.然而,自己从零新建一个空项目,写好了WinMain,也进行了上述步骤,却不能在XP机上运行,会提示 “不是有效的Win32应用程

Qt4程序在windows平台下打包发布

一.打包成绿色版 将源码编译成release版,运行*.exe文件,提示缺少*.dll,在Qt安装目录中找到相应的dll文件(一般在bin目录下),将dll文件复制到exe文件目录下即可. 二.打包成安装版 1.首先安装NSIS软件,NSIS菜单--编译工具--HW VNISEdit 2.上图中选择文件--新建脚本:向导--下一步 3.上图中名称填写*.exe文件名:软件版本.出版人.网站根据实际需要填写(若没有,则保留空白即可):程序标志会在安装界面的底部显示(若不需要也可选择不显示文本).设

Windows 7下配置JDK环境变量和Java环境变量配置

下面来介绍一下Java环境变量配置,是在Windows 7下配置JDK环境变量. 方法/步骤  1 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为:C:\Program Files\Java\jdk1.6.0_21: 2 安装完成后,右击“我的电脑”,点击“属性” 3 单击“高级系统设置”,点击“环境变量” 4 在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”:  JAVA_HO

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

说明:在eclipse中运行java程序的时候一切正常,可是当把jar包导出的时候却发现图片没法显示,这估计是java程序的各种配置和路径问题所导致,后来找到一种解决方法,供遇到这方面问题的学习java程序的鞋同参考: Java项目下的目录结构如下: 其中class类放在包:package accpedu; (即实际是在如上bin/accpedu文件夹下面) 通过下面的方法来引用图片时,在eclipse里面执行是可以正常显示图片的: ImageIcon image1 = new ImageIco

用Java写的爬虫程序

这是一个web查找的根本程序,从命令行输入查找条件(开端的URL.处置url的最大数.要查找的字符串), 它就会逐一对Internet上的URL进行实时查找,查找并输出匹配查找条件的页面. 这个程序的原型来自<java编程艺术>, 为了非常好的剖析,站长去掉了其间的GUI有些,并稍作修改以适用jdk1.5.以这个程序为基础,可以写出在互联网上查找 比如图像.邮件.页面下载之类的"爬虫". 先请看程序运转的进程: D:\java>javac  SearchCrawler