package drawing;
import java.awt.*;
import java.awt.event.*;
class Draw extends Canvas
{
Toolkit tool;
Image img;
Draw()
{
setSize(200,200);
tool=getToolkit();
img=tool.getImage("boy.gif");
}
public void paint(Graphics g)
{ g.drawImage(img,10,10,img.getWidth(this),img.getHeight(this),this);
}
public Image getImage()
{
return img;
}
}
public class ImageCanvas
{ public static void main(String[] args)
{ Draw canvas=new Draw();
Frame frame=new Frame();
frame.add(canvas,BorderLayout.CENTER);
frame.setSize(300,300);
frame.setVisible(true);
frame.setIconImage(canvas.getImage());
frame.validate();
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}}上面的程序是在应用程序中绘制图像,boy.gif放在project的bin文件夹下面。运行程序,始终不能显示绘制的图标,窗口左上角的还是画布上的,都没有显示图像,这个是怎么回事???
import java.awt.*;
import java.awt.event.*;
class Draw extends Canvas
{
Toolkit tool;
Image img;
Draw()
{
setSize(200,200);
tool=getToolkit();
img=tool.getImage("boy.gif");
}
public void paint(Graphics g)
{ g.drawImage(img,10,10,img.getWidth(this),img.getHeight(this),this);
}
public Image getImage()
{
return img;
}
}
public class ImageCanvas
{ public static void main(String[] args)
{ Draw canvas=new Draw();
Frame frame=new Frame();
frame.add(canvas,BorderLayout.CENTER);
frame.setSize(300,300);
frame.setVisible(true);
frame.setIconImage(canvas.getImage());
frame.validate();
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}}上面的程序是在应用程序中绘制图像,boy.gif放在project的bin文件夹下面。运行程序,始终不能显示绘制的图标,窗口左上角的还是画布上的,都没有显示图像,这个是怎么回事???
这句代码改为img = tool.getImage(Draw.class.getResource("images/boy.gif"));
drawing中建了images文件夹行不通,在project中建文件夹images也行不通,提示的错误是Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:115)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:125)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
并且窗口也不能关闭,不知这个是什么情况???
2..gif如果是动态图片,在画布上还是不能显示,估计应该是图片有很多帧,可以把图片分为几个帧来加载