方法没有给出想要的结果?

时间:2016-09-10 15:57:07

标签: java graphics awt

我有这个程序应该是" 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);
    }    
}

程序只显示任何内容并且是空白的,有什么问题吗?

1 个答案:

答案 0 :(得分:3)

您应该按照javadoc

中的描述覆盖paint()方法
  

应用程序必须为Canvas类创建子类才能使其有用   功能,例如创建自定义组件。 paint方法   必须覆盖才能在画布上执行自定义图形

因此,您只需尝试将方法public void mickey(Graphics g)重命名为public void paint(Graphics g)