// Weihnachsbaum.java // // Läuft als Applet wie als Applikation. // import java.awt.*; import java.awt.event.*; import java.applet.*; public class Weihnachtsbaum extends Applet implements MouseListener,WindowListener { // Objekt erzeugen und openFrame()-Funktion aufrufen, falls Applikation public static void main(String[] args) { new Weihnachtsbaum().openFrame(); } // paint() wird vom Applet immer dann aufgerufen, wenn zu Beginn // gezeichnet werden muss. public void paint(Graphics g) { // 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üner Füllung (Baumkrone) g.setColor(Color.green); g.fillPolygon(bk); // Umrandung g.setColor(Color.black); g.drawPolygon(bk); // Polygonzug für 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üllung (Stamm) g.setColor(Color.red); g.fillPolygon(bs); g.setColor(Color.black); g.drawPolygon(bs); } // Nur bei Applikation, nicht Applet notwendig. public void openFrame() { // Ein Fenster Frame frame = new Frame("Weihnachtsbaum"); frame.setSize(600,600); // Größe ändern (breite, höhe) // "Schließen"-Knopf: // Verweis auf die in dieser Klasse definierten WindowAdapter-Mehoden frame.addWindowListener(this); // Maus-Events dem Applet hinzufügen, // Verweis auf die in dieser Klasse definierten MouseAdapter-Methoden addMouseListener(this); frame.add(this); // Füge aktuellen Applet-Context dem Frame hinzu, inklusive // paint(g)! frame.setVisible(true); // Fenster sichtbar machen, Applet wird aktiv. // Und Baum zeichnen // paint(g); // Das macht das Applet automatisch, brauchen wir nicht mehr. } // Klick auf "Schließen"-Button beendet das Programm public void windowClosing(WindowEvent e) { System.exit(0); } // Mausklick ins Fenster beendet das Programm ebenfalls. public void mouseClicked(MouseEvent e) { System.exit(0); } // Diese Events werden ignoriert. public void windowOpened(WindowEvent e) { System.out.println("Fenster wurde geöffnet.");} public void windowClosed(WindowEvent e) { System.out.println("Fenster wurde geschlossen."); } public void windowIconified(WindowEvent e) { System.out.println("Fenster wurde ikonifiziert."); } public void windowDeiconified(WindowEvent e) { System.out.println("Fenster wurde wiederhergestellt, Inhalt neu zeichnen."); // paint(g); // Macht das Applet } public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} // Applet-Methoden, werden nur aufgerufen, wenn das Applet aus // einer HTML-Seite heraus im Browser aufgerufen wird. public void start() { System.out.println("Applet startet."); } public void stop() { System.out.println("Applet stoppt."); } public void init() { System.out.println("Applet wird initialisiert."); } }