Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将图像加载到JPanel_Java_Image_Swing_Jpanel - Fatal编程技术网

Java 将图像加载到JPanel

Java 将图像加载到JPanel,java,image,swing,jpanel,Java,Image,Swing,Jpanel,我想将一个图像加载到JPanel。将要绘制的图像是从此JPanel保存的图像 例如,我有一张从JPanel捕获的图片,稍后我想将该图片加载到同一个JPanel 我试过这个,但不起作用。这段代码位于扩展JPanel的类中。有什么建议吗 public void load(String path) throws IOException { BufferedImage img = ImageIO.read(new File(path)); Graphics2D g2

我想将一个图像加载到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();
}

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


您可以通过覆盖来实现这一点

javax.swing组件的公共组件(图形g){…}
用于java.awt组件的public void paint(图形g)

我的paintComponent方法处理其他内容。如何在paintComponent外部绘制图像?对不起,我是新来的swing@ManosKontakis:你没有。在paintComponent内部绘制它。请查看我的代码编辑,请阅读教程。没有想到if(img!=null)解决方案。谢谢你的快速回答和推荐信!
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);
    }
}