将图像加载到JPanel

时间:2014-12-29 14:31:02

标签: java image swing jpanel

我想将图片加载到JPanel。将要绘制的图像是从此JPanel保存的图像。

例如,我有从JPanel捕获的图片,后来我想将该图片加载到同一个JPanel。

enter image description here

我试过这个,但它不起作用。这段代码位于扩展JPanel的类中。有什么建议吗?

    public void load(String path) throws IOException {
       BufferedImage img = ImageIO.read(new File(path));
       Graphics2D g2d = img.createGraphics();
       g2d.drawImage(img, 0, 0, null);
       this.repaint();
}

2 个答案:

答案 0 :(得分:3)

使用从Image本身派生的Graphics对象将图像绘制回自身(?)。而是将图像存储到字段而不是局部变量,并在JPanel的paintComponent方法中绘制该图像。最重要的是,请查看Swing graphics tutorials

private BufferedImage img;

public void load(String path) throws IOException {
       img = ImageIO.read(new File(path));
       this.repaint();
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (img != null) {
        g.drawImage(img, 0, 0, null);
    }
}

答案 1 :(得分:0)

你可以通过覆盖

来做到这一点

public void paintComponent(Graphics g){...}用于javax.swing组件 和java.awt组件的公共void paint(Graphics g)