# Polygonzug in einem Frame zeichnen. Ich raffs nicht



## Guest (16. Dez 2007)

guten tag. die aufgabe lautet wie folgt:


```
Schreiben Sie eine Java-Klasse Weihnachtsbaum, die beim Aufruf ein Fenster (Frame) offnet, in der mit Hilfe von einfachen Strich- oder Polygonfunktionen in Weihnachtsbaumchen wie das hier abgebildete gezeichnet wird.

Das Fenster soll mit Klick, wahlweise auf das Bäumchen oder auf den
”Schließen“-Knopf, geschlossen werden können.
Das folgende Code-Fragment soll Ihnen helfen, die richtigen Zeichenbefehle zu finden:

// Polygonzug für Baumkrone
Polygon bk = new Polygon();
bk.addPoint(300,50); bk.addPoint(200,150);
bk.addPoint(250,150); bk.addPoint(150,250);
bk.addPoint(200,250); bk.addPoint(100,350);
bk.addPoint(150,350); bk.addPoint(50,450);
bk.addPoint(550,450); bk.addPoint(450,350);
bk.addPoint(500,350); bk.addPoint(400,250);
bk.addPoint(450,250); bk.addPoint(350,150);
bk.addPoint(400,150); bk.addPoint(300,50);

// Polygonzug mit gr¨uner F¨ullung (Baumkrone)
g.setColor(Color.green);
g.fillPolygon(bk);

// Umrandung
g.setColor(Color.black);
g.drawPolygon(bk);

// Polygonzug f¨ur Stamm
Polygon bs = new Polygon();
bs.addPoint(290,450); bs.addPoint(290,550);
bs.addPoint(200,550); bs.addPoint(200,570);
bs.addPoint(400,570); bs.addPoint(400,550);
bs.addPoint(310,550); bs.addPoint(310,450);

// Polygonzug mit brauner F¨ullung (Stamm)
g.setColor(Color.red); g.fillPolygon(bs);
g.setColor(Color.black); g.drawPolygon(bs);
```

der code für das bäumchen ist also schon vorgegeben, er muss nur in das frame eingebunden werden. was ich gemacht habe bisher ist folgendes


```
import java.awt.*;
import java.awt.event.*;




public class Baum2 extends Graphics implements WindowListener, ActionListener {

    
    fenster window = new Frame("My Window");
        
    //Graphics g = new Graphics();
    fenster.add().paint(); // Connect the button with the wi
    
    // Polygonzug f¨ur Baumkrone
            Polygon bk = new Polygon();
            bk.addPoint(300,50); bk.addPoint(200,150);
            bk.addPoint(250,150); bk.addPoint(150,250);
            bk.addPoint(200,250); bk.addPoint(100,350);
            bk.addPoint(150,350); bk.addPoint(50,450);
            bk.addPoint(550,450); bk.addPoint(450,350);
            bk.addPoint(500,350); bk.addPoint(400,250);
            bk.addPoint(450,250); bk.addPoint(350,150);
            bk.addPoint(400,150); bk.addPoint(300,50);
            
            // Polygonzug mit gr¨uner F¨ullung (Baumkrone)
            g.setColor(Color.green);
            g.fillPolygon(bk);
            
            // Umrandung
            g.setColor(Color.black);
            g.drawPolygon(bk);
            
            // Polygonzug f¨ur Stamm
            Polygon bs = new Polygon();
            bs.addPoint(290,450); bs.addPoint(290,550);
            bs.addPoint(200,550); bs.addPoint(200,570);
            bs.addPoint(400,570); bs.addPoint(400,550);
            bs.addPoint(310,550); bs.addPoint(310,450);
            
            // Polygonzug mit brauner F¨ullung (Stamm)
            g.setColor(Color.red); g.fillPolygon(bs);
            g.setColor(Color.black); g.drawPolygon(bs);

            
            
            public static void main(String[] args) {

            new Baum().paint();
            }
    
            public void mainFenster() {

            fenster = new Frame("Mein Fenster");        // Holt ein Fensterobjekt
            fenster.setSize(800,200);                     //Fenstergröße 600x200 Pixel
            fenster.setVisible(true);                    //Fenster wird sichtbar
            fenster.addWindowListener(this);            //Fenster wird mit dem WindowsListener verknüpft
    
            
    
            }
    
    
    
    public void windowClosing(WindowEvent e) {        // Nun müssen alle Methoden des Interface WindowListener deklariert werden

    System.out.println("Schließen-Button wurde geklickt, entferne Fenster.");
    fenster.dispose();
        
    }
        
    public void windowDeactivated(WindowEvent e) {System.out.println("Fenster wurde inaktiv.");}
    public void windowActivated(WindowEvent e) {System.out.println("Fenster wurde aktiviert");}
    public void windowDeiconified(WindowEvent e) {System.out.println("Fenster wurde wieder dargestellt.");}
    public void windowIconified(WindowEvent e) {System.out.println("Fenster wurde ikonifiziert.");}
    public void windowOpened(WindowEvent e) {System.out.println("Fenster wurde geöffnet.");}
    public void windowClosed(WindowEvent e) {System.out.println("Fenster wurde geschlossen.");}

    // Aus dem Interface "ActionListener"
    public void actionPerformed(ActionEvent e) {
                                            //Programm beim 2. Klick beenden
    System.out.println("Es ist etwas passiert: " + e.toString());

    }

       // Polygonzug f¨ur Baumkrone
            Polygon bk = new Polygon();
            bk.addPoint(300,50); bk.addPoint(200,150);
            bk.addPoint(250,150); bk.addPoint(150,250);
            bk.addPoint(200,250); bk.addPoint(100,350);
            bk.addPoint(150,350); bk.addPoint(50,450);
            bk.addPoint(550,450); bk.addPoint(450,350);
            bk.addPoint(500,350); bk.addPoint(400,250);
            bk.addPoint(450,250); bk.addPoint(350,150);
            bk.addPoint(400,150); bk.addPoint(300,50);
            
            // Polygonzug mit gr¨uner F¨ullung (Baumkrone)
            g.setColor(Color.green);
            g.fillPolygon(bk);
            
            // Umrandung
            g.setColor(Color.black);
            g.drawPolygon(bk);
            
            // Polygonzug f¨ur Stamm
            Polygon bs = new Polygon();
            bs.addPoint(290,450); bs.addPoint(290,550);
            bs.addPoint(200,550); bs.addPoint(200,570);
            bs.addPoint(400,570); bs.addPoint(400,550);
            bs.addPoint(310,550); bs.addPoint(310,450);
            
            // Polygonzug mit brauner F¨ullung (Stamm)
            g.setColor(Color.red); g.fillPolygon(bs);
            g.setColor(Color.black); g.drawPolygon(bs);

    
    public void dispose(){}
    public void drawImage(){}
 
    
 }
```

möglicherweise wird das für einige von euch etwas sehr verwirrend aussehen. das liegt daran, dass ich mit diesen objekten irgendwie nicht wirklich vertraut bin. mir hat auch noch keiner erklärt wie das geht, trotzdem muss ich es bis morgen machen. wär toll wenn mir hier wer weiterhelfen könnte ohne mich auf irgendwelche apis zu verweisen denn wie gesagt, ich versteh die objektierung NOCH nicht wirklich und da hilft mir keine api dieser welt weiter....


----------



## Wildcard (16. Dez 2007)

extends Graphics? Das hast du doch niemals vorgegeben bekommen, das ist totaler Unsinn  ???:L


----------



## Wildcard (16. Dez 2007)

Ach so, du hast nur den Polygon Teil bekommen.
Hier mal der anfang, den Rest wirst du hinbekommen.
Schau dir unbedingt deine Unterlagen an, dein Code ist das pure Chaos.

```
public class Tree extends JFrame{
	
	private Polygon bk, bs;
	
	public Tree() {
		bk = new Polygon();
		bk.addPoint(300,50); bk.addPoint(200,150);
		bk.addPoint(250,150); bk.addPoint(150,250);
		bk.addPoint(200,250); bk.addPoint(100,350);
		bk.addPoint(150,350); bk.addPoint(50,450);
		bk.addPoint(550,450); bk.addPoint(450,350);
		bk.addPoint(500,350); bk.addPoint(400,250);
		bk.addPoint(450,250); bk.addPoint(350,150);
		bk.addPoint(400,150); bk.addPoint(300,50);
		
		bs = new Polygon();
		bs.addPoint(290,450); bs.addPoint(290,550);
		bs.addPoint(200,550); bs.addPoint(200,570);
		bs.addPoint(400,570); bs.addPoint(400,550);
		bs.addPoint(310,550); bs.addPoint(310,450);
	} 
	
	public static void main(String[] args) {
		JFrame tree = new Tree();
		tree.setSize(640,480);
		tree.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		tree.setLocationRelativeTo(null);
		tree.setVisible(true);
	}
	
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		g.setColor(Color.green);
		g.fillPolygon(bk);

//		 Umrandung
		g.setColor(Color.black);
		g.drawPolygon(bk);


//		 Polygonzug mit brauner F¨ullung (Stamm)
		g.setColor(Color.red); g.fillPolygon(bs);
		g.setColor(Color.black); g.drawPolygon(bs); 
	}
}
```


----------



## Twanger (16. Dez 2007)

ei besten dank, endlich mal kompetente hilfe. jetzt seh ich wies gemacht wird uns kanns in mein Frame einbauen, muss das nämlich mit awt machen. 

das mit extends graphics hab ich gemacht, weil ich irgendwo gelesen hab, dass das so gemacht wird.

MfG


----------



## Wildcard (16. Dez 2007)

Nein, so wird es definitiv nicht gemacht.
Vor allem kein Graphics Objekt das einen Frame instanziert. 
Das ist schon so daneben, das mir kein passender Vergleich einfällt.


----------

