我想将图片加载到JPanel。将要绘制的图像是从此JPanel保存的图像。
例如,我有从JPanel捕获的图片,后来我想将该图片加载到同一个JPanel。
我试过这个,但它不起作用。这段代码位于扩展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();
}
答案 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)