意图
我有一个java.applet.Applet
子类,其中添加MyApplet
了一个java.awt.Canvas
子类MyCanvas
。
我的代码更改了MyApplet
to的大小new Dimension(600,400)
并更改了MyCanvas
匹配的大小。
MyCanvas
ed的时候paint
应该
- 用红色填充整个区域
- 画一个宽 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()
两者都在MyApplet
,MyCanvas
以防万一该位置向左上角偏移。这只是改变了圆圈 - 剪辑仍然存在。
我错过了什么吗?