图片在APPLET里显示不出来,帮帮忙 如果路径有问题的话,没找到图片的话。会throw MalformedURLException但是没哟catch啊。配置没问题啊。用JB里做的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有可能是图片还没读进来。(也就是在paint中drawImage的时候,还没法显示)我提个建议,你试试(1)在resize(imageWidth,imageHeight)下面加上system.out.println("[width]"+imageWidth+[height]+imageHeight);测试一下是否大小对不对如果是-1,-1,代表图片还没完整的读进来,当然无法显示了否则试试(2)的办法(2)在ImagePanel的paint里加上if(g==null){ System.out.println("go here"); return;};g.drawImage(image,0,0,this);如果出现go here的话,也可以证明当画的时候没有读进来如果确实是这种情况,那么简单的话,可以通过不断的激发paint事件来完成,当某次paint的时候正好可以了,那就画出来了。不过MediaTrack可以帮你完成这一步。(其实追根结底还是ImageObserver方面的内容,具体ImageObserver不多说,因为有可能不是这个情况。如果是的话正好你不清楚那再说不迟)就这些了,希望正是你的问题。(因为如果图片是从网络端读的话,这种可能性很大,但你是从硬盘文件读的,可能性就...试试吧) 按照 squirrelX(善忘)的方法1,的确是图片还没完整的读进来。那么,我该着么办呢?不好意思 Image _img = icon.getImage();MediaTracker tracker=new MediaTracker(this);tracker.addImage(_img,0);try{ tracker.waitForID(0);}catch(InterruptedException e){}resize(icon.getIconWidth(),icon.getIconHeight());ImagePanel imagePanel=new ImagePanel(_img);关键就是中间那部分,addImage中的参数0是个ID号,因为tracker可以同时检测很多,就象下面的waitForID(0)那样实现等待的。如果想做的好一点的话,可以想想另外做个类,弄点线程,然后让这个类专门实现这样判断的功能,免得以后写类似程序都这样来一下。具体MediaTracker的实现是很简单的,你可以看看源代码。多说一点,所有通过getImage()方法得到的Image是单独在内存中的,不会因为变量而释放的,也就是无法释放掉的(除非程序结束)。当然你这里是通过ImageIcon完成的,我对那部分不是太清楚。解决方法是用Toolkit的createImage来替换,或许用不到,但这对于要写高性能的程序还是要知道的。(我说的是v1.2,后续版本的处理不清楚) 这段代码的结果是什么 求java.lang.OutOfMemoryError: Java heap space解决方案? 那位给点思路! 有关if...else...的问题 问一个转码的问题? 同步问题:先进先出和递归 30分 求教一个JMF的问题 java api 中文版 急!applet 我写的MD5算法JAVA源码,与大家共享 问一下,这里的final是什么意思, 要来做什么用的? 高数(一)怎么过呢?大家给点建议
(1)
在resize(imageWidth,imageHeight)下面加上system.out.println("[width]"+imageWidth+[height]+imageHeight);测试一下是否大小对不对
如果是-1,-1,代表图片还没完整的读进来,当然无法显示了
否则试试(2)的办法(2)
在ImagePanel的paint里加上if(g==null){
System.out.println("go here");
return;
};
g.drawImage(image,0,0,this);如果出现go here的话,也可以证明当画的时候没有读进来
如果确实是这种情况,那么简单的话,可以通过不断的激发paint事件来完成,当某次paint的时候正好可以了,那就画出来了。不过MediaTrack可以帮你完成这一步。(其实追根结底还是ImageObserver方面的内容,具体ImageObserver不多说,因为有可能不是这个情况。如果是的话正好你不清楚那再说不迟)就这些了,希望正是你的问题。(因为如果图片是从网络端读的话,这种可能性很大,但你是从硬盘文件读的,可能性就...试试吧)
那么,我该着么办呢?
不好意思
tracker.addImage(_img,0);
try{
tracker.waitForID(0);
}catch(InterruptedException e){
}resize(icon.getIconWidth(),icon.getIconHeight());
ImagePanel imagePanel=new ImagePanel(_img);关键就是中间那部分,addImage中的参数0是个ID号,因为tracker可以同时检测很多,就象下面的waitForID(0)那样实现等待的。如果想做的好一点的话,可以想想另外做个类,弄点线程,然后让这个类专门实现这样判断的功能,免得以后写类似程序都这样来一下。具体MediaTracker的实现是很简单的,你可以看看源代码。多说一点,所有通过getImage()方法得到的Image是单独在内存中的,不会因为变量而释放的,也就是无法释放掉的(除非程序结束)。当然你这里是通过ImageIcon完成的,我对那部分不是太清楚。解决方法是用Toolkit的createImage来替换,或许用不到,但这对于要写高性能的程序还是要知道的。(我说的是v1.2,后续版本的处理不清楚)