Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

56

Transcript of Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

Page 1: 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
Page 2: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 3: 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
Page 4: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 5: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 6: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 7: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 8: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 9: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 10: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 11: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 12: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 13: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 14: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 15: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 16: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 17: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 18: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 19: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 20: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 21: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 22: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 23: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 24: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 25: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 26: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 27: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 28: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 29: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 30: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 31: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 32: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 33: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 34: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 35: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 36: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 37: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 38: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 39: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 40: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 41: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 42: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 43: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 44: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 45: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 46: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 47: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

(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
Page 48: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 49: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 50: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 51: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 52: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 53: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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
Page 54: Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

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