码迷,mamicode.com
首页 > 其他好文 > 详细

可设置背景图片的JPanel

时间:2014-06-15 06:44:15      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   ext   

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;

}

 

可设置背景图片的JPanel,布布扣,bubuko.com

可设置背景图片的JPanel

标签:style   class   blog   code   java   ext   

原文地址:http://www.cnblogs.com/sosomaxba/p/3785926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!