java - 如何在窗口变化时动态调整小程序组件的大小?

标签 java 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 的一部分它使用轻量级资源并具有更多功能。

关于java - 如何在窗口变化时动态调整小程序组件的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025162/

相关文章:

java - 如何创建链接以在 java (netbeans) 的新选项卡中打开网站

java - Java程序的输出

java - 小程序在安全阶段在 IE 中挂起

java - j2ee web 应用程序中的用户访问管理

C# 和 Java DES 加密值不相同

java - 是否可以在不编辑 java.policy 文件的情况下运行 Java Applet?

java - 小程序中的 start() 方法删除面板

java - 使用 Java Applet 用箭头键移动球

java - 无法从 Java 项目访问终端中的 .png 文件

java - 如何修复Java中的 'incompatible types: SomeObject cannot be converted to CAP#1'错误