Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit

Ähnliche Präsentationen


Präsentation zum Thema: "Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit"—  Präsentation transkript:

1 Java-Kurs - 12. Übung Grafik in Java - das Abstract Windowing Toolkit
eine kurze Wiederholung

2 Klassenhierarchie AWT
Component beliebige graphische Entitäten (from awt) geschachtelte Komponenten Container (from awt) eingebettete Programme eigenständige Programme „Toplevel Fenster“ Window Panel (from awt) (from awt) Fenster mit Bedienelementen „Sind sie sicher? Ja/Nein“ Frame Dialog (from awt) (from awt) Applet (from applet) FileDialog (from awt)

3 Fenster in Java AWT: Achtung!
Java hat die vollständige Kontrolle über das Fenster, d. h. kein automatisches Schließen des Fensters Rekonstruieren des Fensterinhaltes nach Überdeckung oder nach Verschieben. Aber: zu jedem Fenster ist (durch die Klasse Frame) die Methode paint definiert paint wird vom System automatisch aufgerufen, wenn der Fensterinhalt durch eine Veränderung betroffen ist

4 Die Methode Paint (I) Die Ausgabe in ein Fenster sollte durch die Überlagerung der Methode paint erfolgen paint bekommt beim Aufruf eine Instanz der Klasse Graphics übergeben. (diese referenziert die eigentliche Zeichenfläche) Definition von paint: public void paint (Graphics g)

5 Die Methode Paint (II) g : referenziert die Zeichenfläche (0,0)
(100,100) (200,200)

6 Überlagerung der Methode paint

7 Zeichenmethoden der Klasse Graphics (I)
Setzen der aktuellen Zeichenfarbe: setColor(Color farbe ); Objekt der Klasse Color z.B.: Color.red Color.black Zeichnen einer Linie von (x1,y1 ) nach (x2,y2 ): drawLine(int x1, int y1, int x2, int y2 ); Hinweis: der Koordinatenursprung (0,0) liegt in der linken oberen Fensterecke!

8 Zeichenmethoden der Klasse Graphics (II)
Zeichnen einer Ellipse: (x1,y1 ) (x2,y2 ) drawOval(int x1, int y1, int x2, int y2 );

9 Graphische Darstellung eines Rechtecks
+x (x+halbe_Breite,y-halbe_Hoehe) +y Schwerpunkt (x,y) (x-halbe_Breite, y+halbe_Hoehe)

10 Beispiel: Die Klasse Rechteck (I)
import java.awt.*; class Rechteck extends Figur { // --- Instanzvariablen float breite, höhe; int x, y; // Koordinaten des Schwerpunktes Color farbe; // --- Konstruktoren Rechteck(float breite_1, float höhe_1, int x, int y, Color farbe) { breite=breite_1; höhe=höhe_1; this.x=x; this.y=y; this.farbe=farbe; }

11 Beispiel: Die Klasse Rechteck (II)
// --- Methoden float fläche () { float flächeninhalt; flächeninhalt=breite*höhe; return flächeninhalt; } void ausgeben() { System.out.println("Dieses Rechteck hat folgende Eigenschaften:"); System.out.print("Breite: "); System.out.println(breite); System.out.print("Höhe: "); System.out.println(höhe); System.out.print("Fläche: "); System.out.println(fläche());

12 Beispiel: Die Klasse Rechteck (III)
void graphisch_ausgeben(Graphics g) { int halbe_breite=(int)(breite/2f+0.5f); //gerundete Werte int halbe_höhe=(int)(höhe/2f+0.5f); g.setColor(farbe); g.drawLine(x-halbe_breite, y-halbe_höhe, // Linie oben x+halbe_breite, y-halbe_höhe); g.drawLine(x+halbe_breite, y-halbe_höhe, // Linie rechts x+halbe_breite, y+halbe_höhe); g.drawLine(x-halbe_breite, y+halbe_höhe, // Linie unten g.drawLine(x-halbe_breite, y-halbe_höhe, // Linie links x-halbe_breite, y+halbe_höhe); }

13 Beispieldatei Datei zur vorigen Folie
\Java Uebung 12\Beispiele\Rechteck.java

14 Beispiel: Die Klasse Grafigur1 (I)
import java.awt.*; class Grafigur1 extends Frame { Figur figur1=null; Figur figur2=null; public static void main (String args[]) { Grafigur1 my_window1 = new Grafigur1("Fenster 1"); my_window1.figur1=new Ellipse(40f,25f,100,100,Color.red); my_window1.figur2=new Dreieck(50f,30f,200,130,Color.blue); my_window1.repaint(); // Signalisiert dem System, daß sich der // Fensterinhalt geändert hat. Folge: // automatischer Aufruf von paint() pause(15000);

15 Beispiel: Die Klasse Grafigur1 (II)
my_window1.setVisible(false); my_window1.dispose(); System.exit(0); } public static void pause(int millisecs) { try { Thread.sleep(millisecs); } catch (InterruptedException e) { // do nothing

16 Beispiel: Die Klasse Grafigur1 (III)
Grafigur1(String titel) { super(titel); setSize(400,350); setVisible(true); } public void paint (Graphics g) { if (figur1 != null) figur1.graphisch_ausgeben(g); if (figur2 != null) figur2.graphisch_ausgeben(g);

17 Beispieldatei Datei zur vorigen Folie
\Java Uebung 12\Beispiele\Grafigur1.java

18 double Zahl = Math.random();
Zufallszahlen in Java Die Methode Math.random() erzeugt Zufallszahlen zwischen 0 und 1 mit 0  Zahl < 1 Verwendung: double Zahl = Math.random(); Zufallszahl zwischen 1 und 4 int zahl = (int) Math.random()* ;

19 Übungsaufgaben Stellen Sie in der Klasse Grafigur1 anstelle der beiden Variablen figur1, figur2 eine Speicherstruktur für beliebige Figuren mit Hilfe eines Arrays zur Verfügung. Diese Struktur soll in der Methode paint() verwendet werden, um die darin gespeicherten Objekte anzuzeigen. Tip: merken Sie sich die Anzahl der gespeicherten Objekte in einer Instanzvariablen, so daß sie bei der Ausgabe nicht zuviele Objekte anzuzeigen versuchen. Schreiben Sie ein Programm, das 50 zufällig ausgewählte Figuren mit zufälligen Größen an zufällige Positionen setzt und diese in einem Fenster anzeigt.


Herunterladen ppt "Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit"

Ähnliche Präsentationen


Google-Anzeigen