我写了个ImagePanel类,是继承JPanel的,就是在JPanel上画出背景图,
可是在Eclipse里调用的时候,我发现有个问题:放置ImagePanel的JFrame
的Layout必须设置为null,才能正常显示图片,而且,Eclipse里设计的时候,其他的组件就显示不出来,在JBulider里还比较正常,但如果将JFrame的Layout改成null,窗口就不能缩放了。
不知道谁能解决这个问题。

解决方案 »

  1.   

    /*ImagePanel用于创建一个可以添加背景图片的面板
     *构造方法有:ImagePanel(ImageIcon imageIcon);
     *也可以调用void setImage(ImageIcon img)
     */
    import java.awt.*;
    import javax.swing.*;public class ImagePanel extends JPanel { private static final long serialVersionUID = 1L;
    private Image _img; /**
     * This is the default constructor
     */
    public ImagePanel(ImageIcon imageIcon) {
    super();
    setOpaque(false);
    _img = imageIcon.getImage();
    setPreferredSize(new Dimension(imageIcon.getIconWidth(),
    imageIcon.getIconHeight()));
    initialize();
    } /**
     * This method initializes this
     * @return void
     */
    private void initialize() {
    this.setSize(300, 200);
    this.setLayout(new GridBagLayout());
    }
    protected void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawImage(_img,0,0,this);
    }
    public void setImage(ImageIcon img){
    if(img != null){
    this._img=img.getImage();
    }
    }
    }