本帖最后由 harrymao18 于 2010-12-31 18:18:35 编辑

解决方案 »

  1.   

    swing hacks里我记得看过, 好像要比你的代码复杂些,不止是这些好像。
      

  2.   

    img = ImageIO.read("Face0.gif"));
    这样就行,不用new File
    然后read里面要写相对于src目录的一个相对路径
    比如你的文件是在src/image/Face0.gif
    那就要写
    img = ImageIO.read("/image/Face0.gif"));
    另外注意,路径中大小写要完全一致
      

  3.   

    加载图片的几种方法
    应用程序 Toolkit  tool;
       tool = getToolkit();
       Image image = tool.getImage("dog.gif");
    Reader reader = new InputStreamReader(getClass().getResourceAsStream("/icon"));//读取文件以类路径为基准
    nf = new ImageIcon(getClass().getResource("/icon/newfile.jpg"));//创建图表
    Icon  icons[i] = new ImageIcon("..icon/"+names[i]+".jpg");//获得图片小应用程序
     Image image  = getImage(getCodeBase(),"dog.gif");
      //getDocumentBase() 获取 MLet 文本文件的基本 URL。
       //getCodeBase() 获取代码基 URL。
       // getImage() 重文件中加载图片到计算机内存中 返回Image 对象
    在 paint方法中代码是 Graphics g.drawImage(image,22,22,2,2,this);
    //drawImage(Image img,int x,int y,ImageObserver observer)
    //    img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。
    //    x - x 坐标。(起始位置)
    //    y - y 坐标。
    //    observer - 转换了更多图像时要通知的对象。 //    drawImage(Image img,
    //                                  int x,
    //                                  int y,
    //                                  int width,
    //                                  int height,
    //                                  ImageObserver observer)
    //   img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。
    //   x - x 坐标。
    //   y - y 坐标。
    //   width - 矩形的宽度。
    //   height - 矩形的高度。
    //   observer - 转换了更多图像时要通知的对象。