Applikationen / Applets. Applets und Servlets. Hallo Applet (in Eclipse)

Ähnliche Dokumente
Einstieg in die Informatik mit Java

Applets I. Grundlagen der g Applet-Programmierung

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

<a href="basic.java">the source.</a>

Applets Pro r g o r g a r m a mier e e r n e n mit Jav a a Einf n üh ü r h u r n u g n g in n App p l p et e s Ya Y na N o N rina

Programmieren II. Java-Applets. Heusch 17 Ratz 4. Institut für Angewandte Informatik

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Softwareentwicklung Applets und Graphik

import java.applet.applet; import java.awt.*; public class Grow extends Applet { public void start() { setbackground(color.orange); } public void

24. Textausgabe in Java. Vorgetragen von Rüdiger Heidenreich

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik)

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

Praktikum 4: Grafiken und Ereignisse

Grundlagen der Informatik für Ingenieure I

Grundlagen der Programmierung APPLETS

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Ab jetzt: Java ohne Kara

Grundlagen der Informatik für Ingenieure I

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Objektorientierte Programmierung Studiengang Medieninformatik

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Instrumentierung und Dekodierung

13 Applets Applets. Parameter Kommunikation mit dem Browser

JavaKara -> Java. 1. Programm schreiben

Universität Potsdam Institut für Informatik Sommersemester Programmierung. Lehrblatt Woche 11

1. Laboraufgabe. Grafische Nutzerschnittstellen. Studiengang I / IEA / SAT

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Fenster in Java. von Stefanie Gerckens 1

Universität Karlsruhe (TH)

Wiederholung JAVA. 1. (Vorbereitung)

Konzepte objektorientierter Programmierung

Inhalt HTML 2. Applets Frames Formulare CSS cascading style sheets. Lehrveranstaltung Internet in AT Dr.-Ing. A. Braune TECHNISCHE UNIVERSITÄT DRESDEN

Kapitel X - Zeichnen mit Java2D

JAVA 3. Arbeitsblätter für die Lehrveranstaltung OOP. III. Applets und JavaScript. Das Applet-Tag:

Einführung in Javadoc

8.6 Visualisierung der Sortieralgorithmen

Interaktive Elemente, GUI-Programmierung

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Einführung in die Programmierung Blockkurs Java

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

11. GUI-Programmierung mit SWING Überblick

Tag 9: Grafische Benutzeroberflächen

Einstieg in die Informatik mit Java

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Einstieg in die Informatik mit Java

Webengineering II. Alexander Klein

Vererbung, Polymorphie

Schablonen für Klassen, Interfaces oder Methoden, die noch nicht festgelegte Datentypen verwenden

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Einstieg in die Informatik mit Java

Anweisungen zur Ablaufsteuerung

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Grundlagen der Informatik für Ingenieure I

Einführung in die Programmierung Blockkurs Java

5 Hausaufgabe Java Applets

Einstieg in die Informatik mit Java

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Java Kurzreferenz Für Fortgeschrittene

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Programmierkurs Java

Grafik-Programmierung

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Ereignisse Graphikausgabe in AWT und Swing

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Grundlagen der Informatik für Ingenieure I

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

Einführung in die Programmierung Blockkurs Java

Klassenvariablen, Klassenmethoden

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Applets und HTML. Martin Wirsing. Exkurs: Noch einmal Object. in Zusammenarbeit mit Matthias Hölzl, Nora Koch

Inhaltsverzeichnis. Florian Bauer CSS Seite 2 von 10

Session 1: Classes and Applets

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete

1. Erzeugen eines neuen leeren Applets

Java Vererbung. Inhalt

Applications Applets (eingeschränkte Rechte)

Klassen und Unterklassen

Interaktion Java und JavaScript

II.4.4 Exceptions - 1 -

Javaprogrammierung unter Notes

Appletprogrammierung

Fragen zur OOP in Java

// // // // // erstellt von W. Stickler import java.applet.*; import java.awt.*; import java.awt.image.*;

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

2D-Clipping. Kapitel Clipping von Linien. y max. y min x min. x max

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Handbuch für die Erweiterbarkeit

GUI Programmierung in Java

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Drucken. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Transkript:

Applets und Servlets Applikationen / Applets Java eignet sich sehr gut zur Entwicklung dynamischer Web-Seiten Web-Seiten können Java-Programme enthalten Werden mitsamt der HTML-Seite (über das Internet) geladen Werden auf dem Rechner des Benutzers ausgeführt Als Applets werden Java Programme bezeichnet, die in eine HTML-Seite eingebettet sind (keine eigenständigen Programme) innerhalb eines Web-Browsers arbeiten Benutzer kommuniziert lokal mit dem Applet Verringerter Netzwerkverkehr Gegenstück zu Applets sind Servlets (Java-Klassen), die auf dem Server(-Rechner) laufen, von dem die Web-Seite geladen wurde mit der Web-Seite auf dem Benutzerrechner kommunizieren Beispiel: Servlet holt Inhalte aus Datenbank und liefert sie an eine Web-Seite, wo sie dann von einem Applet dargestellt werden 1 Wichtige Unterschiede zwischen Java-Applikationen und Java-Applets Hauptprogramm Starten Sicherheit Ein-/Ausgabe Java-Applikation Hauptklasse kann von beliebiger Klasse abgeleitet werden Java-Interpreter ruft die Klassenmethode main auf Keine Beschränkungen beim Zugriff auf Dateien und dem Starten externer Programme Ein-/Ausgaben sowohl rein textorientiert als auch über GUI Java-Applet Wird immer von der Klasse java.awt.applet abgeleitet Web-Browser instanziert die Applet- Klasse und ruft die Methoden init und start auf Kein Zugriff auf Dateien des lokalen Rechners. Keine Möglichkeit externe Programme zu starten. (Ausnahme signierte Applets) Immer grafik- und ereignisorientiert Applets bieten zusätzliche Möglichkeiten im Bereich Benutzerschnittstellen-Design Ausgabe von Sound ist z.b. standardmäßig auf Applets beschränkt 2 java.awt.applet Hallo Applet (in Eclipse) Alle Applets sind Subklasse der Klasse java.awt.applet Die Klasse Applet ist konkrete Grafikklasse (keine abstrakte Basisklasse) erbt von seinen Vaterklassen Component, Container und Panel einen großen Teil der Fähigkeiten, die zur Ausführung benötigt werden enthält Funktionalität, um ein Objekt der Klasse Applet als Hauptmodul eines eigenständigen Programms laufen zu lassen Ein Applet ist ein rechteckiges Bildschirmelement, das eine Größe und Position hat Ereignisse empfangen kann grafische Ausgaben machen kann Object Component Container Panel Applet Ein einfaches Applet public class HalloApplet extends Applet { g.drawstring("hallo Applet", 50, 50); In Eclipse starten mittels 3 4

Ausführen (Einbinden) von Applets Hallo Applet (im Browser) Kompilierte Applets können durch Einbinden in ein HTML-Dokument ausgeführt werden Das Einbinden in HTML-Dokumente erfolgt mit dem Tag <applet> Einleiten durch <applet> Text, der angezeigt wird, wenn das Applet nicht aufgerufen werden kann (wird von applet-fähigem Browser ignoriert) Beenden mit </applet> Beispiel <applet code="helloapplet.class" width=200 height=100> Hier steht das Applet HelloApplet </applet> Applet-Tag wird wie normaler Text in Browser-Ausgabe eingebunden Das Applet belegt die Größe width x height auf dem Bildschirm 1. Ein einfaches Applet HalloApplet.java @SuppressWarnings("serial")//or add serial public class HalloApplet extends Applet { setbackground(color.blue); g.drawstring("hallo Applet", 50, 50); 3. Einbinden in HTML-Datei AppletTest.html Java 1.5 unterstützt Annotations (Anmerkungen) 2. Übersetzen (javac HelloApplet.java) <html> <body> <applet code="halloapplet.class" width=200 height=100> Hier steht das Applet HalloApplet </applet> </body> </html> 4. Ausführen Web-Browser Appletviewer appletviewer AppletTest.html 5 6 Die Parameter des Applet-Tags Parameter von applet (Übersicht) Der Parameter code gibt den Namen der Applet-Klasse an Klassenname sollte inklusive der Extension.class angegeben werden Der Name ist case-sensitive Klassendatei muß sich im aktuellen bzw. angegebenen Verzeichnis befinden (oder in einem der in CLASSPATH angegebenen Verzeichnisse) Zusätzlich zu code müssen die Parameter width und height angegeben werden Bestimmen die Breite und Höhe des für das Applet reservierten Bildschirmbereichs Innerhalb des Applets steht ein Rechteck der Größe width x height als Ausgabefläche zur Verfügung Mit Hilfe zusätzlicher, optionaler Parameter kann die Darstellung des Applets und des umgebenden Textes beeinflusst werden das Applet konfiguriert werden 7 Parameter code height width codebase alt hspace vspace align name object archive Bedeutung Name der Byte-Code-Datei des Applets Höhe der Applet-Fläche in Pixel Breite der Applet-Fläche in Pixel Pfad zu dem Verzeichnis, in dem sich das Applet befindet, das mit code referenziert wurde Alternativer Text für Browser, die zwar das Applet-Tag verstehen, aber Java nicht unterstützen Abstand zu anderen Elementen links und rechts neben dem Applet Abstand zu anderen Elementen über und unter dem Applet Anordnung des Applets in einer Textzeile. Mögliche Werte: left, right, middle, top, bottom, baseline,.. Eindeutiger Appletname. Wird zur Unterscheidung mehrerer miteinander kommunizierender Applets einer Web-Seite verwendet. Name eines serialisierten Applets JAR-Archiv aus dem die Klassendateien und sonstige Ressourcen des Applets geladen werden sollen 8

Initialisierung eines Applets Starten und stoppen eines Applets Nach dem Laden wird ein Applet 1. vom Browser (Appletviewer) zunächst instanziert und dann initialisiert 2. anschließend wird es gestartet und erhält GUI-Events 3. Irgendwann wird es gestoppt 4. Schließlich wird es vom Browser nicht mehr benötigt und zerstört 1. Instanzieren und initialisieren eines Applets Instanzierung (public Applet()) Der Browser erzeugt ein Objekt der von Applet abgeleiteten Klasse, indem er den parameterlosen Default-Konstruktor public Applet() aufruft (üblicherweise nicht überlagert, sondern von Applet geerbt) Initialisierung (public void init()) Nach der Instanzierung ruft der Browser public void init() auf In init können Initialisierungen vorgenommen werden Membervariablen initialisieren, Images oder Fonts laden, Parameter auswerten init wird während der Lebensdauer eines Applets genau einmal aufgerufen (nachdem die Klassendatei geladen und das Applet instanziert wurde) Wird init nicht überschrieben, hat die Methode keine Wirkung 9 2. Starten eines Applets (public void start()) Nach der Initialisierung wird die Methode public void start() aufgerufen, um die Ausführung des Applets zu starten Ein Applet kann mehrfach gestartet werden (im Gegensatz zur Initialisierung) Lädt ein Browser eine andere Web-Seite wird das Applet nicht komplett zerstört, sondern nur gestoppt Beim erneuten Aufruf der Seite wird das gestoppte Applet durch erneuten Aufruf von start wieder gestartet 3. Stoppen eines Applets (public void stop()) Durch Aufruf der Methode public void stop() zeigt der Browser dem Applet an, dass gestoppt werden soll Geschieht immer dann, wenn eine andere Web-Seite geladen wird start und stop können während der Lebensdauer eines Applets beliebig oft aufgerufen werden Es dürfen keine endgültigen Aufräumarbeiten durchgeführt oder bei einem Neustart wieder benötigte Resscourcen entfernt werden 10 Zerstören eines Applets Die Methode paint() 4. Zerstören eines Applets (public void destroy()) Wird ein Applet ganz sicher nicht mehr benötigt (z.b. beim Beenden des Browsers), ruft der Browser public void destroy() auf Die Methode destroy kann überlagert werden, um Aufräumarbeiten zu erledigen Abschieds-Melodie, -Gruß, -Film,... Zerstörung eines Threads, der bei der Applet-Initialisierung angelegt wurde public void stop() { additem("stopping..."); public void destroy() { @SuppressWarnings("serial")//or add serial additem("preparing for unloading..."); public class HelloWorld extends Applet{ StringBuffer buffer; void additem(string s) { System.out.println(s); buffer = new StringBuffer(); buffer.append(s); additem("initializing..."); repaint(); public void start() { g.drawstring(buffer.tostring(), 5, 15); additem("starting..."); 11 Die Methode public void paint(graphics g) der Klasse java.awt.container dient zur Ausgabe von Grafikelementen in einem Container Die Appletfläche ist standardmäßig der Container für alle Ausgabe- Elemente von paint() Die Methode paint() wird vom Browser (Appletviewer) immer dann ausgeführt, wenn die Appletfläche ganz oder teilweise neu gezeichnet wird wird aufgerufen, wenn das Neuzeichnen der Appletfläche mittels repaint() erzwungen wird Die Appletfläche durch andere Fenster überdeckt war und wieder sichtbar wird muss im selbst erstellten Applet überschrieben werden erhält alle Anweisungen, die beim Neuzeichnen der Appletfläche ausgeführt werden sollen erfordert als Aufrufparameter ein Objekt der abstrakten Klasse Graphics welche Methoden zur Ausgabe von Grafikelementen auf der Appletfläche enthält 12

Zeichenfläche Text- und Grafik-Ausgaben erfolgen in Applets mittels paint() auf einer pixelorientierten grafischen Oberfläche x (0,0) Nullpunkt des Koordinatensystems ist die linke obere Ecke der Zeichenfläche (20,10) Auflösung: ein Pixel ganzzahlige Koordinaten Größe der Zeichenfläche ist mit den Attributen width, height im <applet>-tag festgelegt ist abfragbar (seit JDK 1.2) mit den folgenden Methoden aus java.awt.component public int getwidth() public int getheight() In älteren Java-Versionen kann die Größe der Appletfläche mit getsize()und size() ( deprecated ab JDK 1.1) abgefragt werden y 40 20 Textausgabe Auf Appletflächen werden Texte als Grafikelemente dargestellt void drawstring(string s, int x, int y) zeichnet den String s an die Postion (x,y) der Zeichenfläche Anfangskoordinaten des ersten Zeichens auf der Grundlinie des Textes Oberkante Grundlinie Unterkante Abcdefg Werden keine weiteren Eigenschaften für die Schrift festgelegt, wird eine Standardschrift verwendet (abhängig vom Java-System) Mit Hilfe der Klasse java.awt.font können die Schriften für die Grafikausgabe verändert werden 13 14 Schriftattribute Pixelgenauen Positionierung auf der grafischen Oberfläche erfordert Informationen über Schrifthöhe, Laufweite, Unterlängen,... Objekten der Klasse java.awt.fontmetrics können zur Laufzeit Informationen über die Metrik eines Fonts zugewiesen werden Font-Attribute können dann mit FontMetrics-Methoden abgefragt werden Font f = new Font( SansSerif, Font.BOLD+FONT.ITALIC, 30); FontMetrics fm = getfontmetrics(f); Wichtige Methoden von FontMetrics int getascent() Abstand von der Grundlinie bis zur Oberkante int getdescent() Abstand von der Grundlinien bis zur Unterkante int stringwidth(string s) Pixel-Länge des Strings s Ascent Descent Abcdefg 15 Textausgabe Beispiel public class TextApplet extends Applet { Color gelb = new Color(255, 255, 0); setbackground(gelb); String s = "Hallo gelbe Welt"; int xmax = getwidth(); int ymax = getheight(); int xpos, ypos, swidth, sheight, asc, des, dmg; Font f = new Font("SansSerif", Font.BOLD, 30); FontMetrics fm = getfontmetrics(f); swidth = fm.stringwidth(s); asc = fm.getascent(); des = fm.getdescent(); sheight = asc + des; dmg = (asc-des > 0)? (asc-des)/2 : 0; xpos = (xmax-swidth > 0)? (xmax-swidth)/2 : 0; ypos = (ymax-sheight > 0)? ymax/2+dmg : ymax-des; g.setfont(f); g.drawstring(s, xpos, ypos); 16

Farben Mit Hilfe der Klasse java.awt.color können Farben im RGB(A)-Farbmodell dargestellt werden Es existieren statische Konstanten für gängige Farben: Color.red Color.lightGray... setbackground(color) setzt die Hintergrundfarbe der Appletfläche Die mit g.setcolor(color) gesetzte Farbe eines Graphics- Objektes gilt bis zum nächsten Aufruf von setcolor() für alle Grafikausgaben public class ColorApplet extends Applet { Color background, fill; background = new Color(0,255,255); fill = new Color(0.0f,0.0f,1.0f); setbackground(background); 17 g.setcolor(fill); g.fillrect(10,10,50,50); g.setcolor(color.darkgray); g.fillrect(70,70,50,50); Grafikelemente Die Klasse java.awt.graphics ist der Grafik-Kontext für ein universelles Ausgabegerät Neben grafikorientierter Textausgabe erlaubt Graphics die pixelorientierte Darstellung einfacher Liniengrafiken (Linie, Kreis, Rechteck) Einige Methoden von Graphics void drawline(int x1, int y1, int x2, int y2) Zeichnet eine Linie von P1=(x1,y1) nach P2=(x2,y2) void drawrect(int x, int y, int width, int height) Zeichnet ein Rechteck (Linke obere Ecke:(x,y), Breite:width, Höhe:height) void drawoval(int x, int y, int x2, int y2) Zeichnet ein Oval (x,y) (x,y): Linke obere Ecke height width, height: Breite, Höhe width void drawpolygon(int[] xpoints, int[] ypoints, int npoints) Zeichnet ein Polygon xpoints: x-koordinaten der Eckpunkte ypoints: y-koordinaten der Eckpunkte npoints: Anzahl der Polygon-Punkte p 1 p 2 p 3 p 4 p 0 p 5 18 Grafikelemente (Beispiel) public class GrafikApplet extends Applet { int x[]; int y[]; Color black = new Color(0, 0, 0); setbackground(black); x = new int[100]; y = new int[100]; for(int i=0; i<100; ++i) { x[i] = 2*i; y[i] = (int) (100*(Math.sin(i*2*Math.PI/99)+1)); g.setcolor(color.white); g.drawpolyline(x,y,100); Parameterübergabe an Applets Mit Hilfe des optionalen Tags <param> können innerhalb von <applet> </applet> Parameter an ein Applet übergeben werden Jedes param-tag besitzt die Parameter name: Gibt den Namen des zu übergebenden Parameters an value: Gibt den Wert des zu übergebenden Parameters an Innerhalb des Applets können die Parameter mit Hilfe folgender Methode der Klasse Applet abgefragt werden public String getparameter(string name) Liefert für jeden angegebenen Parameter den zughörigen Wert als String Numerische Werte müssen konvertiert werden Existiert kein Parameter mit namen name wird null zurückgegeben 19 20

Beispiel Parameterübergabe public class Rechteck extends Applet { private int xmin, ymin, width, height; Parameterübergabe mit Eclipse Default-Verhalten try { xmin = Integer.parseInt(getParameter("xminR")); ymin = Integer.parseInt(getParameter("yminR")); width = Integer.parseInt(getParameter("widthR")); height = Integer.parseInt(getParameter("heightR")); catch (NumberFormatException e) { xmin = 0; ymin = 0; width = 10; height = 10; String text = "Rechteck ("+xmin +","+ ymin+ "," + width+","+height+")"; g.drawstring(text, 1, 10); g.drawrect(xmin, ymin, width, height); 21 22 Ein Applet, das ein Mosaic eines Bildes zeigt (I) Einbinden des Rechteck-Applets in ein HTML-Dokument java.awt.*; java.applet.*; java.io.*; java.util.scanner; public class MosaicPicture extends Applet { int row,column,maxgrey,tilesize,gapsize; boolean shadow; int[][] picture; Web-Browser String filename = getparameter("filename"); readpicture(filename); try { tilesize = Integer.parseInt(getParameter("tileSize")); gapsize = Integer.parseInt(getParameter("gapSize")); shadow = Boolean.parseBoolean(getParameter("shadow")) catch (NumberFormatException e) { tilesize = 1; gapsize = 0; shadow = false; Aufruf mit appletviewer Parameterübergabe mit HTML <html> <head> <title>rechteck</title> </head> <body> <h1>rechteck</h1> <applet code="rechteck.class" width=200 height=100> <param name="xminr" value=10> <param name="yminr" value=10> <param name="widthr" value=50> <param name="heightr" value=50> Hier steht das Applet Rechteck.class </applet> </body> </html> 23 24

Ein Applet, das ein Mosaic eines Bildes zeigt (II) Ein Applet, das ein Mosaic eines Bildes zeigt (III) public void readpicture(string filename) { try { File file = new File(filename); Scanner sc = new Scanner(file); // Forget header and comment of input file sc.nextline(); // header sc.nextline(); // comment // Read number of columns and rows from input file column = sc.nextint(); row = sc.nextint(); // Read max greyvalue maxgrey = sc.nextint(); // allocate picture memory picture = new int[row][column]; // read in picture data for (int i = 0; i < row; i++) for (int j = 0; j < column; j++) picture[i][j] = sc.nextint(); catch (FileNotFoundException e) { System.out.println(filename+" not found."); System.exit(-1); public float getgreyvalue(int i, int j, int size) { int gv = 0, ngv = 0; for (int ii = 0; ii < size; ii++) for (int jj = 0; jj < size; jj++) { if (i+ii < row && j+jj < column) { gv += picture[i+ii][j+jj]; ngv += 1; return (float) gv / (ngv*maxgrey); i j size 25 26 Ein Applet, das ein Mosaic eines Bildes zeigt (IV) Ergebnisse int x, y = 0; for (int i = 0; i < row; i += tilesize) { x = 0; for (int j = 0; j < column; j += tilesize) { if (shadow) { g.setcolor(color.black); g.drawrect(j + x * gapsize, i + y * gapsize, tilesize,!tilesize); float grey = getgreyvalue(i, j, tilesize); Color color = new Color(grey, grey, grey); g.setcolor(color); g.fillrect(j + x * gapsize, i + y * gapsize, tilesize, tilesize); x++; y++; tilesize=1 gapsize=0 tilesize=8 gapsize=2 tilesize=16 gapsize=2 27 tilesize=32 tilesize=64 gapsize=4 gapsize=4 28