2016-06-05 13 views
-3

Entschuldigung, das wahrscheinlich eine wirklich grundlegende Frage ist, aber ich habe eine Klasse, das ist mit dem Code genannt Schmetterling, der wie so einen Schmetterling Objekt zum Zeichnen: auchWarum zeichnet die Komponente nichts?

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import java.awt.BasicStroke; 

public class butterfly extends JPanel { 
public butterfly() { 
} 
    public void draw(Graphics2D g2){ 
    //the width of the oval. A petal is an oval. 

    //TODO: Your code goes IN HERE (not in main), ALL OF IT. Replace the code below. 

    //draw one oval of length 300pixels from center to edge 
    g2.setColor(Color.blue); 
    g2.fillOval(500,55, 70, 70); 
    g2.fillOval(450, 40, 70, 70); 
    g2.fillOval(460,100, 40, 40); 
    g2.fillOval(495, 110, 40, 40); 


    g2.setColor(Color.black); 
    g2.setStroke(new BasicStroke(13)); 

    g2.drawLine(520, 50, 490, 150); 

} 

} 

dann habe ich versucht, es in dieser Komponente setzen, so kann ich Setze mehr Objekte mit, aber es wird nicht einmal den Schmetterling zeichnen?

import java.util.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class RippingOffofAmy extends JComponent 
{ 

    private butterfly yay; 

    public RippingOffofAmy() 
    { 
     yay = new butterfly(); 
    } 

    public void paintComponent(Graphics g) 
    { 
     Graphics2D g2 = (Graphics2D) g; 

     //checks to see if rectangle has moves 100 places yet 
     //if has, then adds new obstacle and resets count 
     yay.draw(g2); 

     //draws obstacle and avatar 
    } 

} 

warum? (Ignoriere die Klassennamen und Kommentare Ich habe einige meiner Freunde Code verwendet) Wenn ich etwas vermisse, kann jemand wirklich spezifisch sein, was zu bc hinzufügen Ich bin schrecklich in Java, danke!

+4

Dies ist nicht, wie Swing-Zeichnung zu tun und es sieht aus wie Sie wilde Vermutungen nehmen, wie dies zu tun ist, nicht. Hast du die Tutorials schon durchgelesen? Dort würde ich anfangen: [Lektion: Benutzerdefinierte Bemalung durchführen] (http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html) –

+2

Wenn Sie nach der Überprüfung der Tutorials immer noch feststecken, dann Überlegen Sie, ob Sie ein [sscce] (http://sscce.org) oder ein [minimales Beispielprogramm/mcve] (http://stackoverflow.com/help/mcve) erstellen und veröffentlichen, wo Sie Ihren Code in das kleinste Bit, das noch besteht, verdichten kompiliert und läuft, hat keine externen Abhängigkeiten (wie zum Beispiel die Notwendigkeit, eine Verbindung zu einer Datenbank oder Bildern herzustellen), hat keinen zusätzlichen Code, der für Ihr Problem nicht relevant ist, zeigt aber immer noch Ihr Problem. –

+2

1) Ein Schmetterling muss kein Panel sein 2) Wo ist die wichtigste Methode, um Ihre GUI zu zeigen? –

Antwort

-1

Sie sollten einige Tutorials lesen, aber hier ist, was Sie versucht haben zu tun. Hier

ist, was ich tun würde:

package de; 

import java.awt.BasicStroke; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 

import javax.swing.*; 

@SuppressWarnings("serial") 
public class Butterfly extends JPanel { 
@Override 
public void paint(Graphics g){ 
    super.paint(g); 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setColor(Color.blue); 
    g2d.fillOval(500,55, 70, 70); 
    g2d.fillOval(450, 40, 70, 70); 
    g2d.fillOval(460,100, 40, 40); 
    g2d.fillOval(495, 110, 40, 40); 


    g2d.setColor(Color.black); 
    g2d.setStroke(new BasicStroke(13)); 

    g2d.drawLine(520, 50, 490, 150); 
} 

}

Kurzerklärung: erstellen ein JFrame (die das Fenster selbst) die Schmerzen Funktion von JPanel Geben Sie den Code für das außer Kraft setzen Schmetterling in die Schmerzfunktion einen 'Butterfly' erstellen (der JPanel erweitert) fügen Sie den Schmetterling zum JFrame führen Sie das Programm :)

+1

Warum kein Konstrukteur? weil wir JPanel erweitern und alles, was wir tun würden, ist sowieso super, Java macht das für dich. Wenn du einen anderen Weg hast, zeig es mir bitte, ich bin begierig darauf, mehr zu erfahren! –

+0

Jungs Ich weiß ehrlich nicht, was los ist omg –

+1

@ user2130108: Was ist los ist, dass Sie Ihre [mcve] posten sollten und nicht diesen gut gemeinten aber fehlgeleiteten Code ausleihen. –