方法没有给出想要的结果?
methods not giving wanted result?
我有这个程序应该是“draw
”米老鼠脸:
import java.awt.Canvas;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.Rectangle;
public class Mickey extends Canvas {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Canvas canvas = new Mickey();
canvas.setSize(900, 500);
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
public void mickey(Graphics g) {
Rectangle bb = new Rectangle(400, 400, 100, 100);
boxOval(g, bb);
int dx = bb.width/2;
int dy = bb.height/2;
Rectangle half = new Rectangle(bb.x, bb.y, dx, dy);
half.translate(-dx/2, -dy/2);
boxOval(g, half);
half.translate(dx*2, 0);
boxOval(g, half);
}
public void boxOval(Graphics g, Rectangle bb) {
g.fillOval(bb.x, bb.y, bb.width, bb.height);
}
}
程序什么都不显示,一片空白,有什么问题吗?
您应该按照 javadoc
中的描述覆盖 paint()
方法
An application must subclass the Canvas
class in order to get useful
functionality such as creating a custom component. The paint
method
must be overridden in order to perform custom graphics on the canvas.
所以在这里简单地尝试将您的方法 public void mickey(Graphics g)
重命名为 public void paint(Graphics g)
。
我有这个程序应该是“draw
”米老鼠脸:
import java.awt.Canvas;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.Rectangle;
public class Mickey extends Canvas {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Canvas canvas = new Mickey();
canvas.setSize(900, 500);
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
public void mickey(Graphics g) {
Rectangle bb = new Rectangle(400, 400, 100, 100);
boxOval(g, bb);
int dx = bb.width/2;
int dy = bb.height/2;
Rectangle half = new Rectangle(bb.x, bb.y, dx, dy);
half.translate(-dx/2, -dy/2);
boxOval(g, half);
half.translate(dx*2, 0);
boxOval(g, half);
}
public void boxOval(Graphics g, Rectangle bb) {
g.fillOval(bb.x, bb.y, bb.width, bb.height);
}
}
程序什么都不显示,一片空白,有什么问题吗?
您应该按照 javadoc
中的描述覆盖paint()
方法
An application must subclass the
Canvas
class in order to get useful functionality such as creating a custom component. Thepaint
method must be overridden in order to perform custom graphics on the canvas.
所以在这里简单地尝试将您的方法 public void mickey(Graphics g)
重命名为 public void paint(Graphics g)
。