下面程序运行时不能显示图片,各位大虾能帮我看下怎么回事吗?非常谢谢!
其中的ip.show函数估计有问题提示信息是:The method show() from the type Window is deprecatedimport java.awt.*;
import java.awt.event.*;
import java.awt.image.*;public class ImagePixel extends Frame{
Image im , tmp ;
int i , iw , ih ;
int[] pixels ;

public ImagePixel(){
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0) ;
}
}) ;
//利用media tracker跟踪图像的加载
MediaTracker tracker = new MediaTracker(this) ;
im = Toolkit.getDefaultToolkit().getImage("E:\1.jpg") ;
tracker.addImage(im, 0) ;

//等待的图像的完全加载
try{
tracker.waitForID(0) ;
}catch (InterruptedException e){e.printStackTrace();}


//获取图像的宽度iw和高度ih
iw = im.getWidth(this) ;
ih = im.getHeight(this) ;

pixels = new int[iw * ih] ;

try{
PixelGrabber pg = new PixelGrabber(im , 0 , 0 , iw , ih , pixels , 0 , iw) ;
pg.grabPixels() ;
}catch (InterruptedException e) {e.printStackTrace();}

//对rgb值和alpha值进行重新计算和赋值
ColorModel cm = ColorModel.getRGBdefault() ;
for(i = 0 ; i < iw*ih ; i ++)
{
int alpha = 100 ;
int red = cm.getRed(pixels[i]) ;
int green = cm.getGreen(pixels[i]) ;
int blue = cm.getBlue(pixels[i]) ;
pixels[i] = alpha << 24 | red << 16 | green << 8 | blue ;
}

//将数组中的像素产生一个图像
ImageProducer ip = new MemoryImageSource(iw , ih , pixels , 0 , iw) ;
tmp = createImage(ip) ;
}

//调用paint()方法,显示图像信息
public void paint(Graphics g){
g.drawImage(im, 10 , 20 , this) ;
g.drawImage(tmp , iw+50 , 20 , this) ;
}


public static void main(String[] args){
ImagePixel ip = new ImagePixel() ;
ip.setSize(300 , 300) ;
ip.show();//这个在编译的时候提示错误是:The method show() from the type Window is deprecated
}
}

解决方案 »

  1.   

    ip.show();  // 改为  ip.setVisible(true); 试下
      

  2.   

    im = Toolkit.getDefaultToolkit().getImage("E:\1.jpg") ;
    这里面的E:\1.jpg应该改为E:/1.jpg,另外ip.show()最好改为ip.setVisible(true);当然如果不改程序照样能运行.
      

  3.   

    还有一种就是把im = Toolkit.getDefaultToolkit().getImage("E:\1.jpg") ;
    这里面的E:\1.jpg改为E:\\1.jpg
    至于为什么这样改,我也不太清楚,可能java是以/区分文件目录的吧,不过我都是测试过了的,改了之后可以显示图片
    另外show()方法在JDK1.5之后已经由setVisible(boolean )所取代,所以建议用ip.setVisible(true);