代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class BufferedImageTest extends JFrame { private BufferedImage buff;
private Image bgPicture = Toolkit.getDefaultToolkit().getImage("mainbg.jpg");
public BufferedImageTest(){
buff = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
buff.getGraphics().drawImage(bgPicture,0,0,null);
buff.getGraphics().drawLine(0,0,800,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800,600);
this.setVisible(true);
}

public static void main(String[] args) {
new BufferedImageTest(); }
public void paint(Graphics g){
g.drawImage(buff,0,0,this);
}}
这里buff.getGraphics().drawLine(0,0,800,600);这条线可以显示出来,
但是为什么buff.getGraphics().drawImage(bgPicture,0,0,null);图片显示不出来呢?图片文件名没问题啊,哪位大哥帮下忙~~  谢谢了

解决方案 »

  1.   

    建议你这样写试试:
    把:private Image bgPicture = Toolkit.getDefaultToolkit().getImage("mainbg.jpg");
    换成:ImageIcon bgPicture=new ImageIcon("mainbg.jpg");
    然后,
    把:buff.getGraphics().drawImage(bgPicture,0,0,null);
    改成:buff.getGraphics().drawImage(bgPicture.getImage(),0,0,null);
      

  2.   

    你在private Image bgPicture = Toolkit.getDefaultToolkit().getImage("mainbg.jpg");挪到构造函数里,下面加上点东西试试,MediaTracker tr=new MediaTracker(this);
    tr.addImage(bgPicture,0);
    try{
    tr.waitForId(0);
    }catch(Exception e) { }Image是从系统底层构建的,好像得花费时间,而操作并不等它建完就回去进行下一步操作,这样的话,往往就来不及画出来。使用MediaTracker就没有这个问题了,他是画完了才进行下一步操作。
        试试看,是不是这个问题。