我尝试使用以下代码在applet上显示图像,但是当我尝试更改applet窗口的大小时,加载的图像没有调整大小,为什么会发生这种情况?
import java.applet.*;
import java.awt.*;
public class ImageViewer extends Applet
{
Image image;
int imageX, imageY;
MediaTracker mt;
public void init()
{
showStatus("Getting image...");
mt = new MediaTracker(this);
image = getImage(getDocumentBase(), "fruits.jpg");
mt.addImage(image, 0);
}
public void start()
{
showStatus("Loading image...");
try
{
mt.waitForAll();
} catch(Exception e)
{
e.printStackTrace();
}
while(!mt.checkAll(true)){}
imageX = image.getWidth(this);
imageY = image.getHeight(this);
showStatus("Resizing Applet image size: " + imageX + "x" + imageY);
resize(imageX, imageY);
}
public void paint(Graphics g)
{
showStatus("Drawing image...");
g.drawImage(image, 0, 0, this);
}
}
当您使用Graphics.drawImage
方法时,图像不会调整大小,该方法使用图像自己的大小而不是Applet
容器的大小
g.drawImage(image, 0, 0, this);
你可以替换它
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
也别忘了打电话
super.paint(g);
绘制任何子组件,包括容器背景。
顺便说一句:java.awt.Applet
现在已成为一种遗物,已被JApplet取代。这是Java Swing的一部分,它使用轻量级资源并具有更多功能。