Java Applet绘制剪辑到[195,200],尽管调整大小

时间:2011-05-31 13:24:28

标签: java eclipse canvas applet clip

意图

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

我的代码会将MyApplet的大小更改为new Dimension(600,400)并更改MyCanvas的大小以匹配。

MyCanvaspaint编辑时,它应

  1. 红色
  2. 填充整个区域
  3. 绘制宽度为300且高度为300的蓝色圆圈
  4. 问题

    相反(当从Eclipse运行作为Java Applet时),即使MyCanvas正确调整大小,MyApplet的绘图也会剪切到远小于600,400的区域(我将其测量为195,200)。 This is what it looks like.

    enter image description here

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

    代码

    这是我的代码:

    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()中尝试了MyApplet而不是MyCanvas,以防位置偏向左上角。这只是移动了圆圈 - 剪辑持续存在。

    我错过了什么吗?

3 个答案:

答案 0 :(得分:3)

在你的init的第一行写下:

setLayout(new GridLayout(1,1));   

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

答案 1 :(得分:1)

您希望致电setPreferredSizethis解释差异

答案 2 :(得分:0)

终于找到了它!

Eclipse为Applet提供的环境 默认情况下配置为大小为200,200。除非默认运行配置<所有绘图剪辑到此区域/ strong>已更改。

这可以按如下方式完成:

  1. 视图
  2. 中右键单击小程序的根文件夹
  3. 选择运行方式... - &gt; 运行配置...
  4. 点击参数标签
  5. 根据需要更改宽度高度字段。