#1 21. Juli 2008 AWT: Feld an Frame übergeben + zeichnen Grüße an die Gemeinde! Ich bin gerade dabei, mir Java selbst beizubringen. Von einem befreundeten Informatikstudenten bekommen ich immer die Übungsserien, die er an der Uni machen sollte. Der erste Teil bestand darin, eine abstrakte Klasse GeoObj anzulegen. Wie der Name schon sagt, beinhaltet die Klasse Methodennamen wie die Berechnung von Fläche und Umfang von geometrischen Objekten: http://home.arcor.de/vwunkx23/blatt4/src/html/GeoObj.html Von dieser Basisklasse erbten dann die Klassen Rechteck, Quadrat und Kreis: http://home.arcor.de/vwunkx23/blatt4/src/html/Rechteck.html http://home.arcor.de/vwunkx23/blatt4/src/html/Quadrat.html http://home.arcor.de/vwunkx23/blatt4/src/html/Kreis.html Mittels Konstruktor konnte man dann beispielsweise ein Rechteck ganz komfortabel vorinitialisieren. Als Punkt im Koordinatensystem nehmen wir einfach mal P(1;2), die Seitenlänge a ( in x-Richtung) ist mal 4LE und die Seitenlänge b sind 7LE Code: GeoObj o; Rechteck a = new Rechteck (2,new Punkt(1,2),4,7); o = a; o.getArea(); //Berechnung der Flächeninhalts o.getBigness(); //Berechnung des Umfangs Wundert euch nicht über die "2" am Anfang innerhalbt der Klammer. Das soll irgendeine ID sein. Die brauche ich aber erst in einer der nächsten Übungsserien. So nun sollte ich ein Programm entwerfen, das bebliebig viele geometrische Objekte anlegt und bearbeitet. Ganz klar kommt da ein Feld von GeoObj in Frage: Code: GeoObj objects[] = new GeoObj[100];; objects[0] = new Kreis (1,new Punkt (0,0),3); // allgemein:new Kreis(1,new Punkt(x,y),radius); objects[1] = new Rechteck (2, new Punkt(1,2),4,7); // allgemein: new Rechteck (2,new Punkt(x,y),a,b); objects[2] = new Quadrat(3,new Punkt(2,4),1); // algemein: new Quadrat(3,new Punkt(x,y),a); Nun soll ich die eingegebenen geometrischen Objekte, ich entschuldige mich für den schlechten Ausdruck, an ein Fenster übergeben, das alle Objekte darstellt. Für die Umsetzung muss ich ja sicherlich nur das array von GeoObj an einen Frame übergeben, der es dann für mich ausgibt. Code: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package blatt4; import java.awt.*; import java.awt.event.*; public class Frametest extends Frame { public Frametest () { setTitle("Beispiel"); addWindowListener(new TestWindowListener()); add(new DrawingPanel()); setSize(500,500); setVisible(true); } class DrawingPanel extends Panel { public void paint(Graphics g) { g.setColor(Color.GREEN); g.drawRect(100, 10, 50, 50); g.setColor(Color.RED); g.drawOval(300, 10, 50, 50); g.drawLine(10, 10, 10, 460); g.drawLine(10, 460, 480, 460); } } class TestWindowListener extends WindowAdapter { public void windowClosing(WindowEvent e) { e.getWindow().dispose(); System.exit(0); } } public static void main (String args[]) { new Frametest (); } } Hier habe ich mal ein bissel mit AWT rumexperimentiert, und den ein- oder anderen Befehl ausprobiert. Wie kann ich jetzt das array von geometrischen Objekten an den Frame weitergeben? Es wäre ja sicherlich am besten wenn man der paint-Methode das Feld übergeben könnte. Allerdings erwartet diese Methode ja immer ein Objektinstanz von der Klasse Graphics...Wie gesagt, bin gerade etwas überfragt. Mir fehlt auch einfach noch eine Menge Wissen in Bezug auf AWT. So, ich freue mich für jeden konstruktiven Beitrag! BW gibts natürlich auch... Mfg Lucky + Multi-Zitat Zitieren
#2 28. Juli 2008 Zuletzt von einem Moderator bearbeitet: 14. April 2017 AW: AWT: Feld an Frame übergeben + zeichnen habs mal schnell ausgecoded, ginge vl noch schöner/kürzer, hab aber schon längere zeit nix mehr programmiert. ich habs jetzt so gelöst: in der GeoObj eine abstrakte methode paint, mit parameter Graphics g die methode dann in allen subklassen implementieren (zb mit g.drawOval(x,y...) usw) beim zeichnen dann im drawingpanel einfach ne schleife übers object array laufen lassen Download: 2.jpg | xup.in beim fragen, meld dich! lg + Multi-Zitat Zitieren