有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:drawImage找不到我的BuffereImage

我已正确设置了BuffereImage,但编译器给我的错误是找不到变量img

代码如下:

URL url = this.getClass().getResource("spooky.gif");
BufferedImage img = ImageIO.read(url);
mt.addImage(img,1);

public void paint(Graphics g)
{
    g.drawImage(img,0,0,300,300,this);
}

这里是Stackoverflow告诉我,我需要添加更多的细节

整个代码如下所示:

import java.util.*;
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class Spooky extends Applet
{
Image scary, trumpet, walking;
URL url = this.getClass().getResource("spooky.gif");
MediaTracker mt;
AudioClip spoopy;
Graphics buffer;
Image offscreen;
Dimension dim;


public void init()
{
    setLayout(null);
    mt = new MediaTracker(this);
    url = getDocumentBase();
    BufferedImage img = ImageIO.read(url);
    scary = getImage(url,"scary.gif");
    trumpet = getImage(url,"trumpet.gif");
    walking = getImage(url,"walking.gif");
    mt.addImage(img,1);
    mt.addImage(scary,1);
    mt.addImage(trumpet,1);
    mt.addImage(walking,1);
    try{
        mt.waitForAll();
    }
    catch(InterruptedException e){}
    spoopy = getAudioClip(getDocumentBase(),"spoopy.wav");
    spoopy.loop();
}

public void paint(Graphics g)
{
    g.drawImage(img,0,0,300,300,this);
}
}

共 (2) 个答案

  1. # 1 楼答案

    您正在调用其作用域之外的变量。 无法访问该变量,因为在paint函数中使用该变量时,您在init函数中声明并初始化了该变量。 尝试以下方法:

    import java.util.*;
    import java.awt.*;
    import java.applet.*;
    import java.net.*;
    import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;
    
    public class Spooky extends Applet
    {
    Image scary, trumpet, walking;
    URL url = this.getClass().getResource("spooky.gif");
    MediaTracker mt;
    AudioClip spoopy;
    Graphics buffer;
    Image offscreen;
    Dimension dim;
    BufferedImage img;
    
    public void init()
    {
        setLayout(null);
        mt = new MediaTracker(this);
        url = getDocumentBase();
        img = ImageIO.read(url);
        scary = getImage(url,"scary.gif");
        trumpet = getImage(url,"trumpet.gif");
        walking = getImage(url,"walking.gif");
        mt.addImage(img,1);
        mt.addImage(scary,1);
        mt.addImage(trumpet,1);
        mt.addImage(walking,1);
        try{
            mt.waitForAll();
        }
        catch(InterruptedException e){}
        spoopy = getAudioClip(getDocumentBase(),"spoopy.wav");
        spoopy.loop();
    }
    
    public void paint(Graphics g)
    {
        g.drawImage(img,0,0,300,300,this);
    }
    }
    
  2. # 2 楼答案

    以下是我的解决方案:

    import java.util.*;
    import java.awt.*;
    import java.applet.*;
    import java.net.*;
    import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;
    import java.io.*;
    
    public class Spooky extends Applet
    {
    Image scary, trumpet, walking;
    MediaTracker mt;
    AudioClip spoopy;
    Graphics buffer;
    Image offscreen;
    Dimension dim;
    
    public void init()
    {
    setLayout(null);
    mt = new MediaTracker(this);
    
    
    mt.addImage(scary,1);
    mt.addImage(trumpet,1);
    mt.addImage(walking,1);
    spoopy = getAudioClip(getDocumentBase(),"spoopy.wav");
    spoopy.loop();
    }
    
    public void paint(Graphics g)
    {
      try
    {
        URL url = this.getClass().getResource("spooky.gif");
        BufferedImage img;
        img = ImageIO.read(url);
        mt.addImage(img,1);
        g.drawImage(img,0,0,300,300,this);
    }
    catch(IOException e)
    {
    }
    
    }
    }