2016-09-10 2 views
1

Ich habe dieses Programm, die auf „draw“ Mickey Mouse Gesicht soll:Methoden geben kein gewünschtes Ergebnis?

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); 
    }  
} 

Das Programm zeigt nur nichts und leer ist, ist etwas nicht in Ordnung?

Antwort

3

Sie sollen die paint() Methode außer Kraft zu setzen, wie in der javadoc beschrieben

Eine Anwendung muss die Canvas Klasse, um eine Unterklasse nützliche Funktionalität wie das Erstellen einer benutzerdefinierten Komponente zu erhalten. Die paint Methode muss außer Kraft gesetzt werden, um benutzerdefinierte Grafiken auf der Leinwand durchzuführen.

Also hier einfach versuchen, Ihre Methode public void mickey(Graphics g) zu public void paint(Graphics g) umbenennen.