发新话题

图像添加失败,文件无法读取!

package SwingPractise;

import java.awt.*;
import javax.swing.*;
import javax.imageio.*;
import java.io.*;
//import java.awt.event.*;


public class ImageTest {


        public static void main(String[] args) {
                ImageFrame Frame=new ImageFrame();
                Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                Frame.show();

        }

}

class ImageFrame extends JFrame
{
        public  ImageFrame()
        {
                setTitle("ImageTest");
                setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
                setLocation(300,250);
                
                ImagePanel Panel=new ImagePanel();
                Container contentPane=getContentPane();
                contentPane.add(Panel);
        }
        
        public static final int DEFAULT_WIDTH=300;
        public static final int DEFAULT_HEIGHT=200;
        public static final long serialVersionUID=1L;
        
}

class ImagePanel extends JPanel
{
        public ImagePanel()
        {        
                try
                {
                        Image=ImageIO.read(new File("blue-ball.gif"));
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
        }
        
        public void paintComponent (Graphics g)
        {
                super.paintComponent(g);
                
                if(Image==null) return;
                
                int imageWidth=Image.getWidth(this);
                int imageHeight=Image.getHeight(this);
                
                g.drawImage(Image,0,0,null);
                
                for(int i=0;i*imageWidth<=getWidth();i++)
                        for(int j=0;j*imageHeight<=getHeight();j++)
                                if(i+j>0)
                                        g.copyArea(0,0,imageWidth,imageHeight,
                                                i*imageWidth,j*imageHeight);
        }
        
        private Image Image;
        public static final long serialVersionUID=1L;
}
创建图片时出错,提示如下:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1263)
at SwingPractise.ImagePanel.<init>(ImageTest.java:47)
at SwingPractise.ImageFrame.<init>(ImageTest.java:30)
at SwingPractise.ImageTest.main(ImageTest.java:14)

我用的是Eclipse ,我在bin目录和src目录下都试过放置图像文件"blue-ball.gif"!结果还是不行!
请大家帮忙!



编辑 回复 快速回复 TOP
 在eclipse 默认是在 bin/SwingPractise/目录下面
也就是和你的class相同的目录
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP
你把
Image=ImageIO.read(new File("blue-ball.gif"));
这个路径写绝对路径
http://heisetoufa.ggblog.com
1群:5302559
2群:5358308
3群:43605976
4群:43605925(
编辑 回复 快速回复 TOP
紫竹老大。我本来在"bin/SwingPractise/"目录下放的就有"blue-ball.gif"文件,可还是提示出现同样的错误.

后来,头发说让改成绝对路径试试,一试果然可以,我问头发:"相对路径为什么不行?"
头发说:"发布出去的时候,相对路径就有了变化!"

对于头发说的这一点我还不是太明白! 希望紫竹老大能给说的更详细 一点儿。
编辑 回复 快速回复 TOP
发布指的是打成jar包的话,那图像显示失败可能有几种情况:
1.图片没有包含在jar包里;
2.图片的读取部分程序没有考虑打包的问题。
对于第2种情况,可以试下先获取当前类的class的路径,然后根据工程组织结构加上图片的相对路径来解决。
编辑 回复 快速回复 TOP
发新话题