手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

可以设置背景的JPanel!!

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

最近在写Swing的程序,对怎么在在Jpanel上放置背景网上大多数是在上面加个JLabel,然后设置JLAbel的Icon!但这样做后,JPanel上加其它组件就不好处理了!于是想到继承JPanel然后再重写paintComponent(Graphics g)和paintChildren(Graphics g)这两个方法,这样就保证了JPanel,最初的状态,想怎么处理其它组件都行了;以下是源代码:

import Java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

public class BackGroundPane extends JPanel {
private ImageIcon imageIcon;

public ImageIcon getImageIcon() {
return imageIcon;
}

public void setImageIcon(ImageIcon imageIcon) {//设置图片
this.imageIcon = imageIcon;
}

public BackGroundPane() {
super();
this.setOpaque(false);
}

protected void paintChildren(Graphics g) {//重绘JPanel下的Components
super.paintChildren(g);
for(int i =0;i<this.getComponents().length;i ){
this.getComponent(i).repaint();
}
g.dispose();
}

protected void paintComponent(Graphics g) {
Graphics2D g2D = (Graphics2D)g;
super.paintComponent(g2D);

if(imageIcon!=null){//绘制背景
g2D.drawImage(imageIcon.getImage(), 0, 0,this.getWidth(),this.getHeight(),this);

}
g2D.dispose();
}
}

在调用的时候只要新建一个对象,然后再调用setImageIcon(ImageIcon imageIcon)方法就是可以绘制背景了,如果没有背景也可以当JPanel!!

上一篇: Tom小猫,让我看清你的五脏六腑(一)
下一篇: read-Atleap-5-主逻辑1-发表新闻

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!