0

次のコードを実行してアプレットに画像を表示しようとしましたが、アプレット ウィンドウのサイズを変更しようとすると、読み込まれた画像のサイズが変更されません。

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);
    }

}
4

1 に答える 1

3

コンテナGraphics.drawImageのサイズではなく画像自体のサイズを使用する方法を使用しているため、画像のサイズは変更されませんApplet

g.drawImage(image, 0, 0, this);

これを次のように置き換えることができます

g.drawImage(image, 0, 0, getWidth(), getHeight(), this);

電話も忘れずに

super.paint(g);

コンテナーの背景を含む子コンポーネントを描画します。


ところで:JAppletjava.awt.Appletに置き換えられて、今では遺物のようなものです。これはJava Swingの一部であり、軽量のリソースを使用し、さらに多くの機能を備えています。

于 2012-12-24T20:08:31.093 に答える