2

意图

我有一个java.applet.Applet子类,其中添加MyApplet了一个java.awt.Canvas子类MyCanvas

我的代码更改了MyAppletto的大小new Dimension(600,400)并更改了MyCanvas匹配的大小。

MyCanvased的时候paint应该

  1. 红色填充整个区域
  2. 画一个宽 300 高 300 的蓝色圆圈

问题

相反(当作为 Eclipse 的 Java Applet 运行时),MyCanvas即使正确调整大小,剪辑的绘制区域也远小于 600,400(我测量为 195,200)MyApplet这就是它的样子。

在此处输入图像描述

打印输出也可以——见帖子底部。

代码

这是我的代码:

import java.applet.Applet;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;

public class MyApplet extends Applet {

    Canvas mainCanvas;

    public void init() {

        // Set the size of the applet
        setSize(600, 400);

        // Print dimensions
        System.out.println("Applet dimensions: " + getSize());

        // Make a canvas with the same sizes as this applet
        mainCanvas = new MyCanvas(getWidth(), getHeight());
        add(mainCanvas);
    }

    public class MyCanvas extends Canvas {

        public MyCanvas(int w, int h) {

            setSize(w, h);

            System.out.println("Canvas dimensions: " + getSize());
        }

        public void paint(Graphics g) {

            g.setColor(Color.RED);
            System.out.println("Canvas dimensions when painting: " + getSize());
            g.fillRect(0, 0, getWidth(), getHeight());
        }
    }
}

打印输出

它产生以下打印输出:

Applet dimensions: java.awt.Dimension[width=600,height=400]
Canvas dimensions: java.awt.Dimension[width=600,height=400]
Canvas dimensions when painting: java.awt.Dimension[width=600,height=400]
Canvas dimensions when painting: java.awt.Dimension[width=600,height=400]

整个尺寸都是正确的!

尝试的解决方案

  • 我尝试setBounds()了而不是setSize()两者都在MyAppletMyCanvas以防万一该位置向左上角偏移。这只是改变了圆圈 - 剪辑仍然存在。

我错过了什么吗?

4

3 回答 3

3

在你的 init 的第一行放这个:

setLayout(new GridLayout(1,1));   

这将导致您的画布占用您的小程序的所有空间。

于 2011-05-31T13:46:58.583 回答
1

你想打电话setPreferredSize解释了差异

于 2011-05-31T13:27:23.887 回答
0

终于找到了!

Eclipse 提供给 Applets的环境默认配置为大小为 200、200。除非更改默认运行配置,否则所有绘画剪辑都到此区域。

这可以按如下方式完成:

  1. 在Package视图中右键单击 applet 的根文件夹
  2. 选择运行方式... ->运行配置...
  3. 单击参数选项卡
  4. 根据需要更改宽度高度字段。
于 2011-06-01T12:37:51.367 回答