白老师,我有一个问题。我现在创建了一个固定大小的JFrame,在里面添加了东西。但是会有一个问题,当我把这个项目拿到不同的操作系统上,比如从Win7到XP就会出现变形的问题。我找了一下原因,应该 是由于两个系统下JFrame的边框的大小不一样造成的。请问这种情况怎么解决?
还有就是关于界面背景的问题,在JPanel上可以重写
/**
* 覆盖父类paint方法
* <p>绘制背景</p>
*
* @param g Graphics对象
*/
public void paint (Graphics g){
super.paint(g);
g.drawImage(Icons.BG.getImage(), 0, 0, null);
super.paintChildren(g);
}
就能很好的实现,可是JFrame上不行啊,就算是绘制成功,因为如果添加东西到JFrame,那么contentPane会覆盖掉背景啊 ?怎么解决啊,一般我们是怎么添加背景的啊?
还有就是关于项目分包的问题,因为项目大了有很多类,应该怎么建包啊,比如我有一个界面类,里面会添加一些功能组件,这些组件,panel都是属于这个界面类的,我是把这些和这个界面类装在一起还是单独建一个包放他们啊,但是我本来是有一个View包装所有界面的。还有就是一些图片,音乐这些又该怎么放啊?
谢了哈,白老师,就是上面的三个问题
在JPanel中要去重写patinComponent()方法,绘制背景一般都在这里面去绘制的。这样就不会覆盖其他组件了,关于不同系统上JFrame边框大小不一样你可以在JFrame里面放一个JPanel,以后所有的组件都加在这个JPanel里面。设置大小的话就先获得JFrame的四个边框大小,然后再加上一个你自己设置的大小
this.getInsets().top //上边框
this.getInsets().left //左边框
this.getInsets().right //右边框
this.getInsets().bottom //下边框
关于建包的问题,一般界面类都会放在一个包里面,比如view,这里面包含窗口类、面板类
如果是做游戏会涉及到角色类,会建一个角色包,比如role
一些处理音乐、文件的类会放在util包里面
如果还有javabean对象会放到bean包里面