我有一个java.applet.Applet
子类MyApplet
,其中添加了java.awt.Canvas
个子类MyCanvas
。
我的代码会将MyApplet
的大小更改为new Dimension(600,400)
并更改MyCanvas
的大小以匹配。
当MyCanvas
被paint
编辑时,它应
相反(当从Eclipse运行作为Java Applet时),即使MyCanvas
正确调整大小,MyApplet
的绘图也会剪切到远小于600,400的区域(我将其测量为195,200)。 This is what it looks like.
打印输出也可以 - 见帖子底部。
这是我的代码:
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
,以防位置偏向左上角。这只是移动了圆圈 - 剪辑持续存在。我错过了什么吗?
答案 0 :(得分:3)
在你的init的第一行写下:
setLayout(new GridLayout(1,1));
这会导致您的画布占用小程序的所有空间。
答案 1 :(得分:1)
您希望致电setPreferredSize
,this解释差异
答案 2 :(得分:0)
终于找到了它!
Eclipse为Applet提供的环境 默认情况下配置为大小为200,200。除非默认运行配置<所有绘图剪辑到此区域/ strong>已更改。
这可以按如下方式完成: