Swinghacks——显示图片的2种常用方法

来源:互联网 发布:java api 1.6汉化版 编辑:程序博客网 时间:2024/05/29 19:23

1、利用JLabel的icon来显示图片

基本思路就是把要显示的图片设置为JLabel的图标setIcon(icon),然后设置JLabel的文本和边框为null

public class ImageLabel extends JLabel {    public ImageLabel(String img) {        this(new ImageIcon(img));    }    public ImageLabel(ImageIcon icon) {        setIcon(icon);        //setMargin(new Insets(0,0,0,0));        setIconTextGap(0);        //setBorderPainted(false);        setBorder(null);        setText(null);        setSize(icon.getImage().getWidth(null),                icon.getImage().getHeight(null));    }}

2、当然还可以重写paintComponent方法将整个组件画成图片,这样JPanel是不错的选择

public class ImagePanel extends JPanel {        private Image img;    public ImagePanel(String img) {        this(new ImageIcon(img).getImage());    }    public ImagePanel(Image img) {        this.img = img;        Dimension size = new Dimension(img.getWidth(null),img.getHeight(null));        setPreferredSize(size);        setMinimumSize(size);        setMaximumSize(size);        setSize(size);        setLayout(null);    }    public void paintComponent(Graphics g) {        g.drawImage(img,0,0,null);    }}

要说和JLabel的icon有什么不同的话,JLabel是整图显示,而使用drawImage的话更灵活一些,比如要对图片进行放大缩小,就可以简单的利用drawImage的高度和宽度参数

    public abstract boolean drawImage(Image img, int x, int y,      int width, int height,       ImageObserver observer);