首页 > 代码库 > 可设置背景图片的JPanel
可设置背景图片的JPanel
package com.sot.he.upload;import java.awt.Graphics;import java.awt.Image;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JPanel;/** * 可设置背景图片的JPanel <br> * 提供了三种显示背景图片的方式:居中、平铺和拉伸 * * @author maxiang */public class PicPanel extends JPanel { private static final long serialVersionUID = -8251916094895167058L; private Image image;// 背景图片 /** * 背景图片显示模式索引(引入此属性有助于必要时扩展) */ private int modeIndex; public PicPanel(String imgPath, int modeIndex) { this.modeIndex = modeIndex; try { image = ImageIO.read(new FileInputStream(imgPath)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 构造一个具有指定背景图片和指定显示模式的JImagePane * * @param image * 背景图片 * @param modeType * 背景图片显示模式 */ public PicPanel(Image image, int modeIndex) { super(); this.image = image; this.modeIndex = modeIndex; } /** * 获取背景图片 * * @return 背景图片 */ public Image getBackgroundImage() { return image; } /** * 绘制组件 * * @see javax.swing.JComponent#paintComponent(Graphics) */ protected void paintComponent(Graphics g) { super.paintComponent(g); // 如果设置了背景图片则显示 if (image == null) { return; } int width = this.getWidth(); int height = this.getHeight(); int imageWidth = image.getWidth(this); int imageHeight = image.getHeight(this); switch (modeIndex) { // 居中 case 0: { int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; g.drawImage(image, x, y, this); break; } // 平铺 case 1: { for (int ix = 0; ix < width; ix += imageWidth) { for (int iy = 0; iy < height; iy += imageHeight) { g.drawImage(image, ix, iy, this); } } break; } // 拉伸 case 2: { g.drawImage(image, 0, 0, width, height, this); break; } } } /** * 居中 */ public static final int CENTRE = 0; /** * 平铺 */ public static final int TILED = 1; /** * 拉伸 */ public static final int SCALED = 2;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。