最近在做一个图片整理软件,遇到一个比较坑的问题,在GUI中event事件中加载图片第一次加载的图片必然没有进来,第二次却可以完成图片加载,加载方式是通过file获取到路径,使用toolkit中的getimage(路径)的方法加载,可是第一次永远都是创建的图片高度宽度均为-1,对象非空,当第二次点击按钮时没有出现此类问题,初步怀疑是不是由于GUI的的线程加载有问题,还是toolkit内部的getimage方法是异步实现的?求高手解答,关注跪谢。

解决方案 »

  1.   

    可以用ImageIcon这个类来加载图片
      

  2.   

    filechoser=new JFileChooser();
    File path,filename;
    int yn=filechoser.showOpenDialog(this);
    if(yn==JFileChooser.APPROVE_OPTION)
    {
    path=filechoser.getCurrentDirectory();
    filename=filechoser.getSelectedFile();
    ImageIcon icon=new ImageIcon(filename.toString());
    icon.setImage(icon.getImage().getScaledInstance(piclab.getWidth(), piclab.getHeight(), Image.SCALE_DEFAULT));
    piclab.setIcon(icon);
    }
    我自己是这样写的,图片可按照比例缩放,但好像没有遇到你所说的问题
      

  3.   

    toolkit加载图片是异步加载的,
    执行完toolkit的getImage方法后图片并没有完全加载到内存中去
    所以不能立即显示
    通常是在后面用一个循环来显示图片
      

  4.   

    Toolkit的getImage要配合MediaTracker 使用。
      

  5.   

    一定要用ImageIO.read
    然后使用MediaTracker实现延时加载....
    可以看我博客!