如何在窗口更改时动态调整applet组件的大小?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在窗口更改时动态调整applet组件的大小?相关的知识,希望对你有一定的参考价值。

我尝试使用以下代码在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的一部分,它使用轻量级资源并具有更多功能。

以上是关于如何在窗口更改时动态调整applet组件的大小?的主要内容,如果未能解决你的问题,请参考以下文章

在容器 Kendo 窗口调整大小时动态更改 Kendo Grid 行的高度

在窗口调整大小时动态调整画布大小

在我调整大小之前,组件不会在 Applet 中显示

如何动态更改 jQuery Datatables 高度

如何在调整 QTableView 大小时动态更改列数?

如何在 Chart.js 2.9.3 中绘制具有动态厚度的水平条(在浏览器窗口高度调整大小时自动调整大小)?