Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
-
Upload
willafried-schmiesing -
Category
Documents
-
view
105 -
download
0
Transcript of Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Java ohne Kara
Ab jetzt Java ohne Kara
Ziel Erfahrungen sammeln mit ersten Java Programmen
JavaKara -gt Java
Ablauf in JavaKara1 Programm schreiben2 Kompilieren3 Programm starten
Ablauf in Java gleich1 Programm schreiben2 Kompilieren3 Programm starten
1 Programm schreiben
Texteditor statt JavaKara-Editor
2 Kompilieren
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
javac steht fuumlr bdquojava compilerldquo
3 Programm starten
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
TextPad
Wir verwenden hier TextPad(wwwtextpadcom)bull Vorteil 1
Farben erleichtern das Lesen der Programmzeilen
bull Vorteil 2Kompilieren und Start des Applets mit je einem Menu-Befehl
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Ab jetzt Java ohne Kara
Ziel Erfahrungen sammeln mit ersten Java Programmen
JavaKara -gt Java
Ablauf in JavaKara1 Programm schreiben2 Kompilieren3 Programm starten
Ablauf in Java gleich1 Programm schreiben2 Kompilieren3 Programm starten
1 Programm schreiben
Texteditor statt JavaKara-Editor
2 Kompilieren
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
javac steht fuumlr bdquojava compilerldquo
3 Programm starten
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
TextPad
Wir verwenden hier TextPad(wwwtextpadcom)bull Vorteil 1
Farben erleichtern das Lesen der Programmzeilen
bull Vorteil 2Kompilieren und Start des Applets mit je einem Menu-Befehl
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
JavaKara -gt Java
Ablauf in JavaKara1 Programm schreiben2 Kompilieren3 Programm starten
Ablauf in Java gleich1 Programm schreiben2 Kompilieren3 Programm starten
1 Programm schreiben
Texteditor statt JavaKara-Editor
2 Kompilieren
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
javac steht fuumlr bdquojava compilerldquo
3 Programm starten
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
TextPad
Wir verwenden hier TextPad(wwwtextpadcom)bull Vorteil 1
Farben erleichtern das Lesen der Programmzeilen
bull Vorteil 2Kompilieren und Start des Applets mit je einem Menu-Befehl
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
1 Programm schreiben
Texteditor statt JavaKara-Editor
2 Kompilieren
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
javac steht fuumlr bdquojava compilerldquo
3 Programm starten
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
TextPad
Wir verwenden hier TextPad(wwwtextpadcom)bull Vorteil 1
Farben erleichtern das Lesen der Programmzeilen
bull Vorteil 2Kompilieren und Start des Applets mit je einem Menu-Befehl
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
2 Kompilieren
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
javac steht fuumlr bdquojava compilerldquo
3 Programm starten
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
TextPad
Wir verwenden hier TextPad(wwwtextpadcom)bull Vorteil 1
Farben erleichtern das Lesen der Programmzeilen
bull Vorteil 2Kompilieren und Start des Applets mit je einem Menu-Befehl
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
3 Programm starten
Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf
TextPad
Wir verwenden hier TextPad(wwwtextpadcom)bull Vorteil 1
Farben erleichtern das Lesen der Programmzeilen
bull Vorteil 2Kompilieren und Start des Applets mit je einem Menu-Befehl
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
TextPad
Wir verwenden hier TextPad(wwwtextpadcom)bull Vorteil 1
Farben erleichtern das Lesen der Programmzeilen
bull Vorteil 2Kompilieren und Start des Applets mit je einem Menu-Befehl
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
TextPad
bull Wir brauchen nur wichtigste Funktionen des TextPad ndash Datei oumlffnenndash Datei speichernndash Ruumlckgaumlngig-Befehlndash Java kompilierenndash Java-Applet starten
bull Siehe TextPad-Anleitung in den Unterlagen
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Warum HelloWorldhtml
bull 2 Arten Java Programmendash Java Applikationenndash Java Applets
bull Kannmuss man in Webseiten einbauenbull Einfachere Programme als bei Applikationen
bull Applets Man benoumltigt Webseite (html) und ein Betrachtungsprogramm
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Wie sieht die html-Datei aus
Dateiname der kompilierten Java-Klasse
Groumlsse des Programm-Fensters
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
TextPad-Problem
bull Um Java-Applet aus dem TextPad zu starten muss die html-Datei bereits existieren
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Also nochmals
1 Programm schreiben -gt HelloWorldjava
2 Kompilieren -gt HelloWorldclass(javac HelloWorldjava)
3 HTML-Datei (zB HelloWorldhtml) erstellen und Programm starten(appletviewer HelloWorldhtml)
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Ein einfaches Java-Applet
import javaawt
import javaapplet
public class HelloWorld extends Applet
public void paint(Graphics screen)
screendrawString(hello world 10 10)
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Gaumlhhhnnn
Jetzt seid Ihr aber dran
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Auftrag
bull Jede schreibt das HelloWorld-Applet speichert es kompiliert es und laumlsst es laufen
bull Zeit 20 Minuten
bull Ihr findet alleswas Ihr brauchtin den Unterlagen
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Los
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Quelle Uli Stein
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Wichtig bei Java-Programmen
bull Dateiname = KlassennameHelloWorldjava lt-gt () class HelloWorld ()
bull Kompilieren nicht vergessen (Sonst startet man eine alte bdquoHelloWorldclassldquo-Version)
Goldene Regel
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Das Spezielle an Java
bull Java stellt viele Funktionen zur Verfuumlgung
bull Durch diese bdquoFertig-Bauelementeldquo ist man schneller am Ziel
bull Aber Man muss sich andie Richtlinien halten
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
public void paint()
bull Wird von Java aufgerufen sobald ein Bildschirmbereich neu gezeichnet werden muss
bull Von Java festgelegter Namebull Ideal um Grafik-Sachen zu
zeichnen
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Ablauf bei Java-Programmen
bull In Java programmiert man Ereignissebull Ereignis bdquoFuumlhre bei Mausklicks die
Methode xy ausldquobull Nicht Ereignis-gesteuert
Viel komplizierter
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Ablauf bei Java-Programmen
bull Einige vordefinierte Methoden init start paint stop destroy
bull Die restlichen Ereignisse muss man selber definierenndash ZB Neuer Knopf erstellenndash Ereignis-Methode schreibenndash Methode zuordnen bdquoWenn Mausklick auf
diesen Knopf dann fuumlhre Methode xy ausldquo
Hauml ndash Brauchen wir vorlaumlufig gar nicht
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Ablauf bei Java
Von Java definierte Methodenndash Beim Start der Ausfuumlhrungvoid init()
ndash Immer wenn es etwas zu zeichnen gibtvoid paint(Graphics g)
ndash Vor dem Programmendevoid destroy()
ndash Und noch weitere wie void start() void stop() void update()
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Was muss ich jetzt tun
bull Methode paint() eignet sich ideal fuumlr das Zeichnen von Punkten Linien etc auf den Bildschirm
bull Java-Applet-Programm muss die Methode enthalten dann wird sie automatisch aufgerufen
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Linie zeichnen
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
x
y
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
import javaawt
import javaapplet
public class ZeichneLinie extends Applet
public void paint(Graphics screen)
screendrawLine(101020050)
Graphicshellip
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Graphicshellip
Java
An Programm starte dein paint(hellip)
Programm
Okay Aber wo soll ich
denn hinzeichnen
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Graphicshellip
Java
Hier kriegst du ein Blatt Papier vom
Typ Graphics
Programm
Danke Ich nenne das
Blatt screen
Graphics
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Zusammengefasst
bull Der Methode paint() wird ein Objekt vom Typ Graphics uumlbergeben
bull Dem Objekt geben wir einen Namenbull Objekte vom Typ Graphics stellen viele
Methoden bereit zB drawLine(hellip)
public void paint (Graphics screen)
screendrawLine(101020050)
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Graphics-Befehle
Graphics screen
bull Text ausgebenscreendrawString(Java ist cool 10 20)
bull Linie zeichnenscreendrawLine(5 10 250 40)
bull Punkt zeichnenscreendrawLine(10 70 10 70)
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Jetzt kombinieren wir alles
bull Variablen Schleifen Methoden Linien Kreise Punkte Texte
bull Grafik-Aufgaben im Anhang
bull Zeit 45 Minutenbull Danach 15 Minuten Pause
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Hinweise zu Grafik
bull Koordinaten beginnen bei (00)bull Fenster der Groumlsse 400x200
ndash Punkt oben-links (00)ndash Punkt unten-rechts (399199)
Punkt (42)
0 1 2 3 4
0
1
2
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Graphics-Blatt weitergeben
bull Methode zeichneRechteck(hellip) soll man mitscreendrawLine(x1 y1 x2 y2)eine Linie zeichnen koumlnnen
bull Wir geben das Blatt an die Methode weiterpublic void paint (Graphics blatt)
zeichneRechteck(10 10 200 50 blatt)
void zeichneRechteck ( Graphics screen)
screendrawLine(x1 y1 x2 y2)
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
RechteckAppletjava
void zeichneRechteck(int x int y int width int height Graphics screen) ()
screendrawLine(obenlinks_x obenlinks_y obenrechts_x obenrechts_y )
screendrawLine(obenrechts_x obenrechts_y untenrechts_x untenrechts_y)
screendrawLine(untenrechts_x untenrechts_y untenlinks_x untenlinks_y )
screendrawLine(untenlinks_x untenlinks_y obenlinks_x obenlinks_y )
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
RechteckAppletjava
int obenlinks_x = xint obenlinks_y = y
int obenrechts_x = x+width-1int obenrechts_y = y
int untenlinks_x = xint untenlinks_y = y+height-1
int untenrechts_x = x+width-1int untenrechts_y = y+height-1
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
RechteckAppletjava
public void paint(Graphics g) zeichneRechteck(10050200100g) gdrawLine(10050299149) gdrawLine(29950100149)
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Punktmuster
bull Punktmuster im 10er-Raster
bull Ideen
10 Punkte
Erstelle mal die erste Zeile
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
for (int i=0 ilt400 i++) screendrawLine(i100i100)
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Punktmuster
Und jetzt
10 Punkte
Die restlichen Zeilen Wiederhole erste Zeile bdquox-Malldquo
for (int j=0 jlt400 j++)
for (int i=0 ilt400 i++) screendrawLine(i10 0 i10 0)
for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Auf den ersten Blick verwirrend
bull Innere Schleife wird zuerst abgearbeitet(einzelne Zeile)
bull Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden
for (int j=0 jlt400 j++) for (int i=0 ilt400 i++) screendrawLine(i10 j10 i10 j10)
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Schweizerkarte
bull Schweizerkarte auf dem Bildschirm anzeigen
bull Stadt Bern und Stadt Zuumlrich einzeichnen
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Wo einzeichnen
bull Koordinaten von Berny=200000 x=600000
bull ETH Zuumlrich Houmlnggerbergy=251326 x=679885
x
y
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Wo ist Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i= j=j
i
x=679885 y=251326
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Fuumlr x bzw i
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
x=679885
Linker Rand subtrahierenxneu=179885
0 350lsquo000xneu
Streckungsfaktor
scale=600
350000Multiplizieren mit scalexneuscale=308
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Auf einen Blick
300lsquo000
50lsquo000
x0=500lsquo000 x1=850lsquo000
y
x
0
4000 i1=600
x=679885
i=(x-x0) =308i1
x1-x0
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Fuumlr y bzw j
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
y=251326
Idee Drehe j-Achse voruumlbergehend
jneu
400
0
Jetzt wie bei x- bzw i-Achsejneu=(y-y0) =322
j1
y1-y0
y1=300lsquo000
y0=50lsquo000
jneu
j1=400
0
j=400-jneu=78
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Auf einen Blick
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
j
i
x=679885
i=(x-x0) =308i1
x1-x0
y=251326
j=j0 - (y-y0) =78j1
y1-y0( )
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
(308 78)
Wo ist nun Zuumlrich
300lsquo000
50lsquo000
500lsquo000 850lsquo000
y
x
0
4000 600
i=berechneBildschirmI(x)
j=berechneBildschirmJ(y)
j
i
x=679885
y= 251326
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Nun in Java
int berechneBildschirmI (double x) double bildschirmI bildschirmI = (x-XMIN) FENSTERMAX_I (XMAX-XMIN) return (int) bildschirmI
int berechneBildschirmJ (double y) double bildschirmJ double jverkehrt jverkehrt = (y-YMIN) FENSTERMAX_J (YMAX-YMIN) bildschirmJ = FENSTERMAX_J ndash ( jverkehrt ) return (int) bildschirmJ
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Bern
i=berechneBildschirmI(600000)
j=berechneBildschirmJ(200000)
171
160
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Nicht dein Traum-Typ
bull Typen kann man in Java umwandeln
bull Gleitkommazahl in eine Ganzzahl umwandelnint idouble pi = 314159 i = (int) pi
bull Ganzzahl in Zeichenkette umwandelnint jahr = 2002String text = Wir haben das Jahr + jahr
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen)
awt Advanced Windowing Toolkit
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Java-Geruumlst
import javaawtimport javaappletpublic class ZeichneLinie extends Applet public void paint(Graphics screen) bdquoErweitertldquo Applet dh
ZeichneLinie gehoumlrt zu den Applets
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Graphics
bull Neben Graphics gibt es in Java auch noch eine Klasse Image
bull Graphics beinhaltet immer ein Image aber auch noch weitere Objekte
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-
Graphics
bull Wir zeichnen die Linien in das Graphics-Objekt
bull Dort werden die Linien auf das Image-Objekt uumlbertragen
Graphics
Image
Aktuelle Font
Aktuelle Farbe
Hintergrund
- Folie 1
- Folie 2
- Ab jetzt Java ohne Kara
- JavaKara -gt Java
- 1 Programm schreiben
- 2 Kompilieren
- 3 Programm starten
- TextPad
- TextPad
- Warum HelloWorldhtml
- Wie sieht die html-Datei aus
- TextPad-Problem
- Also nochmals
- Ein einfaches Java-Applet
- Gaumlhhhnnn
- Auftrag
- Los
- Folie 18
- Wichtig bei Java-Programmen
- Das Spezielle an Java
- public void paint()
- Ablauf bei Java-Programmen
- Slide 23
- Ablauf bei Java
- Was muss ich jetzt tun
- Linie zeichnen
- Graphicshellip
- Slide 28
- Slide 29
- Zusammengefasst
- Graphics-Befehle
- Jetzt kombinieren wir alles
- Hinweise zu Grafik
- Graphics-Blatt weitergeben
- RechteckAppletjava
- Slide 36
- Slide 37
- Punktmuster
- Slide 39
- Auf den ersten Blick verwirrend
- Schweizerkarte
- Folie 42
- Wo einzeichnen
- Wo ist Zuumlrich
- Fuumlr x bzw i
- Auf einen Blick
- Fuumlr y bzw j
- Slide 48
- Wo ist nun Zuumlrich
- Nun in Java
- Bern
- Nicht dein Traum-Typ
- Java-Geruumlst
- Slide 55
- Graphics
- Slide 57
-