日期:2014-05-20  浏览次数:20881 次

java swing 自定义 ImagePanel
public class ImagePanel extends JPanel
{
private Image img;

public ImagePanel(Image img)
{
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setSize(size);
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setLayout(null);
}

protected void paintComponent(Graphics g)
{
g.drawImage(img, 0, 0, null);
}
}

已经可以显示图片了,但是我不能理解为什么加了一个Image成员变量,然后重写了paintComponent()方法
就可以了?我猜测关键在于Graphics对象是如何传递的?求解释。。。
Java Swing Image

------解决方案--------------------
Graphics是JAVA 2D的图形设备接口,可以支持绘制各种组件与图形图像
JAVA Swing只有两种方法可以获取Graphics对象
一种是继承swing组件的paint或者paintComponent方法
另外一种方法是从图像对象中创建BufferedImage.createGraphic()

其他你不可能获取到Graphics接口对象。另外一个更重要是
从图像创建Graphics,使用完之后要调用dispose方法销毁。