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

由于在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

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

  1. java写桌面程序

    一:使用java swing开发窗口程序 简述: 1.文章内容主要是使用java swing类库开发一个小的窗口程序,然后使用exe4j发布成exe可以安装的程序,让初学者对使用java来做pc软件开 ...

  2. Java写诗程序

    import java.util.Random; public class test_word { public static void main(String[] args) { System.ou ...

  3. 如何让Java写的程序,脱离Eclipse在别人的电脑上运行?

    Java程序运行,离不开JRE. 将JRE文件夹拷贝出来, 将编写程序的bin文件夹拷贝出来, 再编写一个bat文件. start jre\bin\javaw.exe -cp .\bin\ -Djav ...

  4. Java全栈程序员之03:Ubuntu下安装idea

    JetBrains的产品我曾经用过很长一段时间,它们是resharper和dotcover.VS号称宇宙最强IDE,直到它遇到了resharper,我们才知道,原来vs可以更好.DotCover是一个 ...

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

    在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 ...

  6. Java全栈程序员之04:Ubuntu下安装MySQL、注册服务及Navcat

    在安装MySQL之前,我们先来介绍一下Ubuntu下软件的安装方式.首先回顾下,我们安装JDK,使用的是后缀名为tar.gz的安装包.安装idea,使用的是tar.gz:那有没有别的安装方式呢? 1. ...

  7. Java全栈程序员之05:Ubuntu下安装TOMCAT、集成到IDEA

    使用idea绝不是开发一个Hello World这么简单,现在我们要使用idea进行企业级开发(也就是JavaEE)的准备了,那么首先,我们就得有一个web应用服务器.选什么呢?当然首选是大名鼎鼎的T ...

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

    背景 最近在写一个窗口程序,想在Windows XP上也能跑.先用vs 2015的App Wizard生成了一个实例窗口程序,按照网上大部分攻略,将 "Properties - Genera ...

  9. Xcode6 运行程序后,右侧Debug区域的Memory显示空白解决方法

    http://chenyh-blog.com/%E8%9B%8B%E7%96%BC%E7%9A%84%E5%86%85%E5%AD%98-%E7%AC%AC%E4%B8%89%E7%AF%87-sdw ...

随机推荐

  1. nodejs 利用zip-local模块压缩文件夹

    var zipper = require("zip-local"); zipper.sync.zip("./folder").compress().save(& ...

  2. MySQL最大连接数设置

    在使用MySQL数据库的时候,经常会遇到这么一个问题,就是“Can not connect to MySQL server. Too many connections”-mysql 1040错误,这是 ...

  3. 集合之HashMap(含JDK1.8源码分析)

    一.前言 之前的List,讲了ArrayList.LinkedList,反映的是两种思想: (1)ArrayList以数组形式实现,顺序插入.查找快,插入.删除较慢 (2)LinkedList以链表形 ...

  4. tensorflow点滴笔记

    1.模型保存 模型保存需要使用函数 tf.train.Saver(), a)创建saver时,可以指定需要存储的tensor,如果没有指定,则全部保存. b) 创建saver时,可以指定保存的模型个数 ...

  5. SQL 函数NULLIF、NULL、ISNULL、COALESCE、IIF

    NULLIF函数 NULLIF(Expression1,Expression2):给定两个参数Expression1和Expression2,如果两个参数相等,则返回NULL:否则就返回第一个参数. ...

  6. git 回退版本

    回滚到指定的版本 git reset --hard e377f60e28c8b84158 强制提交 git push -f origin master

  7. 性能测试工具 Locust

    https://docs.locust.io/en/latest/quickstart.html

  8. oracle总结--增删改查

    oracle的执行计划SQL> EXPLAIN PLAN FOR SELECT * FROM emp;已解释.SQL> SELECT plan_table_output FROM TABL ...

  9. BZOJ1004[HNOI2008]Cards——polya定理+背包

    题目描述 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红色,Sb张蓝色 ...

  10. centos6.8下安装dc2012

    前言 centos6.8系统中安装synopsys公司的design compiler 2012. 流程 1.请掌握必要的linux知识,否则你将获得成吨的困难. linux系统:centos 6.8 ...