当前位置: 技术问答>java相关
为什么我调用image的getWidth和getHeight时总是出错?
来源: 互联网 发布时间:2014-12-27
本文导语: 有时能得到宽,有时得到高,或者都是-1,非要调用第二次后才能正确得到准确的尺寸 非常奇怪,并且我把它放在paint()中好象可以用了,但竟然还有不正常的时候 为什么? 请帮忙! | (参...
有时能得到宽,有时得到高,或者都是-1,非要调用第二次后才能正确得到准确的尺寸
非常奇怪,并且我把它放在paint()中好象可以用了,但竟然还有不正常的时候
为什么?
请帮忙!
非常奇怪,并且我把它放在paint()中好象可以用了,但竟然还有不正常的时候
为什么?
请帮忙!
|
(参考)
import java.awt.image.*;
import java.awt.*;
import java.net.*;
public class app extends java.applet.Applet {
Image source;
Image resizedImage;
public void init() {
MediaTracker media = new MediaTracker(this);
// java how-to image for example
source = getImage(getDocumentBase(),"jht.gif");
media.addImage(source,0);
try {
media.waitForID(0);
// scale down, half the original size
ImageFilter replicate =
new ReplicateScaleFilter
(source.getWidth(this)/2, source.getHeight(this)/2);
ImageProducer prod =
new FilteredImageSource(source.getSource(),replicate);
resizedImage = createImage(prod);
media.addImage(resizedImage,1);
media.waitForID(1);
}
catch(InterruptedException e) {}
}
public void paint(Graphics g) {
g.drawImage(source, 10,10,this);
g.drawImage(resizedImage,10, 80,this);
}
}
import java.awt.image.*;
import java.awt.*;
import java.net.*;
public class app extends java.applet.Applet {
Image source;
Image resizedImage;
public void init() {
MediaTracker media = new MediaTracker(this);
// java how-to image for example
source = getImage(getDocumentBase(),"jht.gif");
media.addImage(source,0);
try {
media.waitForID(0);
// scale down, half the original size
ImageFilter replicate =
new ReplicateScaleFilter
(source.getWidth(this)/2, source.getHeight(this)/2);
ImageProducer prod =
new FilteredImageSource(source.getSource(),replicate);
resizedImage = createImage(prod);
media.addImage(resizedImage,1);
media.waitForID(1);
}
catch(InterruptedException e) {}
}
public void paint(Graphics g) {
g.drawImage(source, 10,10,this);
g.drawImage(resizedImage,10, 80,this);
}
}
|
java加载图象是异步的。也就是说,在你执行到getwidth时,它还不一定读完图象。所以当然是-1了。
你可以用下面的程序等待加载
MediaTracker media = new MediaTracker(this);
media.addImage(your_Image,1);
media.waitForID(1);
你可以用下面的程序等待加载
MediaTracker media = new MediaTracker(this);
media.addImage(your_Image,1);
media.waitForID(1);