Java-Applets mit NetBeans/BlueJ1

Werbung
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
Einführung in die Informatik
- Teil 1 Java-Applets mit NetBeans/BlueJ1
Inhalt:
1.
2.
3.
4.
5.
6.
7.
Ein erstes Applet
HTML-Seiten und Applets
Das Übersetzen von Programmen
Das Hilfesystem
Einige Grafikbefehle
Ein erstes Beispiel
Aufgaben
Literaturhinweise:
• Küchlin/Weber: Einführung in die Informatik, Objektorientiert mit Java,
Springer 1998
• Krüger, Guido: Handbuch der Java-Programmierung,
http://www.javabuch.de oder Addison Wesley 2002
• Tutorials zu NetBeans und BlueJ
1
Copyright SUN (www.sun.com) / BlueJ (www.bluej.org)
S. 1
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
1.
S. 2
Ein erstes Applet
Sollten Sie nur über einen älteren Rechner verfügen, dann lassen Sie besser die Finger von
grafischen Entwicklungsumgebungen! Ansonsten: NetBeans ist ein mächtiges Werkzeug, das
über entsprechend viele Einstellungsmöglichkeiten verfügt, in denen man sich ganz schön
verheddern kann. Zum Glück gibt es eine umfangreiche, frei zugängliche Dokumentation. Bei
der Installation und den ersten Schritten hält man sich am besten an diese. In Tutorials ist das
Ganze gut beschrieben.
Obwohl Applets (also Programme, die in einem Browser ablaufen können) etwas aus der
Mode gekommen sind, wollen wir sie als Erstes benutzen. Kinder wollen zeigen, was sie Tolles gebaut haben, und das können sie sehr leicht in einem Browser. Die Unterschiede zur
Entwicklung von Applications (Anwendungen, also Programmen, die unter einem Betriebssystem direkt gestartet werden) ist bei Verwendung einer IDE (einer integrierten Entwicklungsumgebung) wie NetBeans minimal, so dass es eher egal ist, womit wir beginnen.2
NetBeans arbeitet mit Wizards, also Hilfsprogrammen, die einen ganz gut durch die einzelnen Stufen verschiedener Prozesse leiten. Diese arbeiten mit den Voreinstellungen, die sie
vorfinden. Eine davon ist die, Daten im Homeverzeichnis des Benutzers abzulegen. Da ich
nichts davon halte, mit Anwendungsprogrammen im Stammverzeichnis von Windows zu arbeiten, wollen wir das als erstes abstellen. Dazu legen wir ein neues Verzeichnis für NetBeans-Projekte an, z. B. F:\NetBeans-Projekte.
Nach dem Start von NetBeans erhalten wir ein recht leeres Fenster mit dem üblichen Menü3
sowie einem Willkommens-Bildschirm mit den neuesten Nachrichten über NetBeans – wenn
wir das nicht abgestellt haben (CheckBox unten-rechts).
CheckBox zum Abschalten
der neuesten Nachrichten.
2
Sie merken schon: wir beginnen gleich mit Computer-Kauderwelsch. Da diese Begriffe aber im Netz und der
Literatur ständig benutzt werden, wollen wir sie auch dann benutzen, wenn sie nicht gerade zu gutem Deutsch
führen. Wir müssen die Fachliteratur ja lesen können.
3
Derzeit gibt es die Kombination NetBeans/BlueJ nur in der englischen Version.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 3
Jetzt erzeugen wir ein neues Projekt (File Æ New Project). Ein Projekt ist im Wesentlichen
ein Unterverzeichnis, in dem sich noch ein paar Dateien befinden, die NetBeans Auskunft
über das Projekt geben, z. B. ob und wenn welches Programm ggf. als Erstes zu starten ist.4
Wir erhalten einen neuen Bildschirm, in dem wir auswählen können, welche Art von Projekt
erzeugt werden soll.
Wir wählen die JavaAnwendung aus dem
Ordner „General“ und
klicken den NextButton an.
Dort vergeben wir
einen aussagekräftigen
Namen für das Projekt
(„ProjektMeinErstesApplet“) und – wichtig! – wählen unser
neu angelegtes Projektverzeichnis
als
„Project-Location“
aus. In Zukunft wird
dieses dann immer
automatisch eingetragen, bis wir ein neues
angeben. Die Häkchen
in den beiden CheckBoxes darunter entfernen wir durch Anklicken – das macht das weitere Vorgehen einfacher!
4
Später, wenn Sie Ihre Ergebnisse abgeben, packen Sie einfach so ein Projektverzeichnis in eine ZIP-Datei und
schickes es uns per Mail zu.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 4
Wir haben damit ein leeres Projekt – als einen Rahmen, den es jetzt mit Inhalt zu füllen gilt.
Da wir ein Applet erzeugen wollen, erzeugen wir eine neue Datei (File Æ New File…) und
wählen im erscheinenden Fenster aus den Java GUI Forms die AWT-Forms und von diesen
die Applet Form aus.
Die wählen
wir!
Mit Next > kommen wir zum nächsten Fenster, in dem wir nur den Namen des Applets angeben: MeinErstesApplet (na ja).
Finish beendet diesen Vorgang.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 5
Der NetBeans-Bildschirm ist jetzt schon wesentlich voller! Im Designer-Modus, in dem wir
weitere grafische Elemente einfach im Applet platzieren können, sehen wir:
Die Dateien des
Projektverzeichnisses
Elemente des aktivierten Objekts
Die (hier aufgeklappte)
Palette, aus der wir
Elemente wie Buttons
etc. in das Applet ziehen können.
Das eigentliche
Applet
Fenster für Meldungen des
Systems, Ausgaben, …
Klicken wir aus den Source-Reiter (neben „Design“), dann erscheint der bisher automatisch
generierte Quellcode des Applets. Wir sehen Java-Code: Das Grundgerüst eines leeren
Applets.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 6
In diesem sind einige Kommentare (die mit /* … */ oder /** … **/ „geklammert“ werden)
sowie die Methode init „eingeklappt“. Durch Klicken auf die Plus-Zeichen können wir sie
„aufklappen“.
Init dient dazu, eventuell mithilfe der Palette erzeugt Elemente im Applet zu initialisieren. Da
wir solche – außer einem BorderLayout – nicht haben, ist der Code weitgehend leer.
Kommentare, die Sie später auch selbst zur Dokumentation Ihres Programms einfügen müssen, sind so eine Sache. Einerseits erklären Sie den Programmtext und können auch zur Automatischen Dokumentation benutzt werden (in der zweiten Form), andererseits verlängern
Sie natürlich auch das Programm. Da unser Applet kaum etwas bewirken wird, wollen wir sie
vorerst einfach löschen. Damit erhalten wir eine kleinere Version des Applets (die auftretenden Begriffe werden später erklärt):
public class MeinErstesApplet extends java.applet.Applet
{
public void init()
{
try
{
java.awt.EventQueue.invokeAndWait(new Runnable()
{
public void run()
{
initComponents();
}
});
}
catch (Exception ex)
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
{
}
}
S. 7
ex.printStackTrace();
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents()
{
setLayout(new java.awt.BorderLayout());
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
}
Um etwas Sinnvolles zu erreichen, wollen wir einen Button in das Applet einfügen, mit dessen Hilfe wir die Farbe ändern können. Wir schalten dazu in den Design-Modus zurück (View
Æ Editors Æ Design) und ändern im Inspektor das BorderLayout des Applets (alles wird
„an den Rändern“ platziert) zu Null-Layout (wir können Elemente frei verschieben). Zur Änderung benutzen wir die rechte Maustaste!
Danach ziehen wir einen Button aus der AWT-Palette in das Applet. Dieser erhält standardmäßig die Aufschrift button1. In den Properties (Eigenschaften) des Buttons können wir die
Aufschrift (das Label) und andere Eigenschaften (Größe, Name, ….) ändern. Wir ändern das
Label in „Werde rot!“ und den Namen in bFarbe („b“ von „button“).
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 8
Zuletzt fügen wir dem Button eine Methode bFarbeActionPerformed hinzu (den Namen
vergeben wir notfalls „perHand“), klicken auf Code und ergänzen den (ersten!) selbst geschriebenen Java-Code:
• Vor dem Applet die Zeile
import java.awt.*; //alle Elemente der AWT-Bibliothek importieren
• Im Eventhandler bFarbeActionPerformed die Zeile
this.setBackground(Color.RED);
//Hintergrundfarbe des Applets („this“) ändern
Jetzt starten wir das Applet mit Run Æ Run File Æ Run MeinErstesApplet.java oder kürzer mit Umschalt-F6 und erhalten das folgende Bild im Applet-Viewer, …
… das sich
nach
Anklicken des Buttons wie gewünscht
ändert.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
2.
S. 9
HTML-Seiten und Applets
Beim Übersetzen hat NetBeans aus der Quelltextdatei des Applets (MeinErstesApplet.java)
eine vom Java-Interpreter ausführbare Datei (MeinErstesApplet.class) erzeugt. Diese wird
vom Appletviewer verarbeitet. Wollen wir das Applet in einer HTML-Seite ansehen, dann
können wir die automatisch von NetBeans im build-Ordner erzeugte Datei nehmen. Diese
öffnen wir (File Æ Open File Æ …) und sehen uns den Text einmal an (ohne Kommentare):
<HTML>
<HEAD>
<TITLE>Applet HTML Page</TITLE>
</HEAD>
<BODY>
<H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3>
<P>
<APPLET codebase="classes" code="MeinErstesApplet.class"
width=350 height=200></APPLET>
</P>
<HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT>
</BODY>
</HTML>
Für uns ist nur der fett gesetzte Abschnitt wichtig. In diesem wird angegeben, dass die classDatei des Applets im Unterverzeichnis classes zu finden ist (codebase=“classes“) und die
Applet-Datei den Namen „MeinErstesApplet.class“ hat (code=“MeinErstesApplet.class“).
Weiterhin werden die Appletmaße angegeben (350 x 200 Pixel). Wollen wir eine andere Größe vorgeben, dann können wir diese Werte einfach ändern.
Wenn wir die aktuellen Java-Versionen
benutzen, dann kann es vorkommen, dass
unser Browser die neuen Möglichkeiten
noch gar nicht kennt. In diesem Fall kann
das Applet nicht angezeigt werden. In
meiner aktuellen Version von NetBeans
klappt es ganz gut mit Mozilla, mit dem
Internet-Explorer derzeit eher weniger.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 10
Wie arbeitet eigentlich ein Applet? In welcher Reihenfolge werden die Befehle überhaupt
ausgeführt?
Zur Beantwortung dieser Frage müssen wir das Zusammenspiel von Browser (bzw. AppletViewer) und Applet etwas genauer ansehen.
Unsere HTML-Datei enthält ja Anweisungen, die den Browser veranlassen, entsprechende
Objekte wie Textzeilen oder ein Applet zu erzeugen und anzuzeigen. Der Browser enthält
dann diese Objekte, n Textzeilen und ein Applet der Klasse MeinErstesApplet. Diese wiederum erbt alle Eigenschaften der Standard-Appletklasse namens Applet. In einem UMLKlassendiagramm stellt man das entsprechend dar:
Man erzeugt ein neues Applet (z. B. mit dem Namen Applet1), indem man eine neue Klasse
aus der Mutterklasse Applet ableitet: public class Applet1 extends Applet {...}.
Damit die Mutterklasse gefunden wird, muss man vorher die Bibliothek (Package) angeben,
in sie sich befindet: import java.applet.*; Bei Bedarf folgen weitere Packages, z.B. mit
import java.awt.*; (Informationen zur „richtigen“ objektorientierten Programmierg OOP
folgen später!)
Programmiert wird, indem die (leeren) Standardmethoden der Applet-Klasse durch eigene
Methoden überschrieben (ersetzt) werden. Standardmethoden sind z.B.
•
init()
wird anfangs einmal ausgeführt.
•
start()
wird bei jedem Neustart ausgeführt ausgeführt.
•
stop()
wird am Ende ausgeführt.
Weil wir meist mit Grafik arbeiten wollen, müssen wir noch die Zeichenmethode überschreiben, die einen Grafikkontext g bereitstellt, den wir uns als ein Zeichenblatt vorstellen können,
das einen Stift, einen Pinsel, ein Textwerkzeug usw. enthält.
•
paint(Graphics g)
Die Methoden werden beim Start des Applets vom Browser automatisch aufgerufen.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 11
Wir erhalten damit das Gerüst eines Applets:
import java.awt.*;
import java.applet.*;
public class Applet1 extends Applet
{
public void init()
{
// z.B. Initialisierungen
}
public void start()
{
// z.B. Hintergrund neu zeichnen
}
public void paint(Graphics g)
{
// Grafikbefehle
}
}
public void stop()
{
// braucht man nur selten
}
Kommentare kann man in Java mit einem Doppelstrich (//) einleiten. Der restliche Text der
Zeile wird dann vom Java-Übersetzer überlesen.
Diese Methoden werden vom Browser in einer festgelegten Reihenfolge aufgerufen, die wir
durch ein UML-Sequenzdia-gramm gut darstellen können:
Wir sehen, dass zuerst der
Konstruktor des Applets aufgerufen wird. Überschreiben
wir den Applet-Standardkonstruktor, so können wir schon
dort erste Einstellungen vornehmen.
Üblicher ist es, in der InitMethode z. B. die Komponenten (Buttons, …) zu initialisieren. NetBeans tut dieses, indem es dort eine Methode
initComponents(); aufruft,
die die Einstellungen vornimmt, die wir im Designer
„perHand“ gesetzt haben.
Damit wir dem System hier
nicht
dazwischenpfuschen,
versteckt es diese Methode
erstmal. Klappen wir sie auf,
dann erscheinen die eingestellten Werte:
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 12
private void initComponents()
Button erzeugen
{
bFarbe = new java.awt.Button();
und Werte setzen
setLayout(null);
bFarbe.setLabel("Werde rot!");
bFarbe.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
bFarbeActionPerformed(evt);
Ereignisbehandlungsme}
thode hinzufügen, die
});
add(bFarbe);
bFarbeActionPerformed
bFarbe.setBounds(80, 110, 72, 24);
aufruft
}
Größe einstellen und zum Applet hinzufügen
3. Das Übersetzen von Programmen
Man schreibt ein Java-Applet im Editor. Schon bei der Eingabe werden sehr viele Fehler von
NetBeans erkannt und angezeigt (durch „Unterpunkten“ und ein rotes „x“ vor der Zeile).
Manchmal muss man ein bisschen warten, damit sich das System den Text „ansehen“ kann.
Bringen wir den Mauszeiger über das „x“, dann wird der Fehler im Klartext angezeigt.
Fehlermeldung
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 13
Typische Fehler sind
•
falsche Groß-/Kleinschreibung
•
falsche Klammerstruktur („Klammer fehlt“)
•
Fehler in den Parameterlisten („ein Wert zu viel“)
•
Typfehler („Zahl statt Zeichen“)
Übersetzt man das Programm, dann werden gefundene Fehler im unteren Fenster Test Results angezeigt. Klickt man auf die Fehleranzeige, dann springt der Cursor in die entsprechende Zeile. Während der Eingabe blendet NetBeans mögliche Optionen ein. Schreibt man
also z. B. „this.“ (d.h. this und „Punkt“) und wartet einen Augenblick, dann erscheint ein
Fenster mit den möglichen Methoden von this (dem Applet), den „Befehlen“.
Wählt man eine Methode aus und tippt die öffnende Klammer, dann erscheint eine Liste mit
den notwendigen Parametern.
Durch Verbessern der Fehler und erneutes Übersetzen erhält man schrittweise ein Programm,
das frei von Syntaxfehlern ist und übersetzt werden kann. Der Java-Compiler (Übersetzer)
erzeugt dann aus der Quellcode-Datei nnn.java eine Code-Datei nnn.class im angegebenen Package (also einem Unterverzeichnis), die dann auf der HTML-Seite angegeben wird.
Die Class-Datei enthält Code für die virtuelle Maschine von Java (die Java-VM, einen „Modellcomputer“), die in den verschiedenen Browsern enthalten ist. Da alle diese virtuellen Maschinen den gleichen Code „verstehen“, können Java-Programme auf allen diesen Rechnern
unabhängig vom Betriebssystem ablaufen. (Leider arbeiten die verschiedenen Java-VMs nicht
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
S. 14
Eckart Modrow
völlig identisch, so dass die Ergebnisse des gleichen Applets durchaus unterschiedlich ausfallen können.)
import java.awt.*
import …
class test extends ..
{
int I=0;
…..
}
Übersetzung durch
NetBeans
Quellcode
(in nnn.java)
LDA 0
STA (234)
….
Javacode
(in nnn.class)
Interpretation
durch die virtuelle
Java-Maschine
00100111101
11010010100
01010101101
……
ausführbarer Code
(rechnerspezifisch)
Logische Fehler befinden sich meist auch in dem Programm. Diese können beim Debuggen (Fehlersuche) gefunden werden, wenn ein Programm schrittweise ausgeführt wird und
die aktuellen Werte der Variablen im Überwachungsfenster verfolgt werden.
Zuerst setzen wir im Quelltext einen (oder mehrere) Breakpoints, indem wir links neben die
Zeile klicken. Sollen diese Befehle ausgeführt werden, dann stoppt das System, so dass wir
den momentanen Zustand ansehen können.
Wir wählen dazu aus dem Menü Run Æ Run File Æ Debug <Appletname>
und warten eine Weile, bis der Debugger gestartet wurde. Nachdem das System gestoppt hat,
können wir mit Run Æ New Watch z. B. die Werte einzelner Variabler im Watch-Fenster
verfolgen und zusehen, wie sich der Debugger durch die Javamethoden des Laufzeitsystems
wühlt. Durch Drücken von F7 bzw. F8 können einzelne Befehle bzw. ganze Methoden ausgeführt werden.
ein Breakpoint
überwachte
Ausdrücke anzeigen
überwachte Ausdrücke
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
4.
S. 15
Das Hilfesystem
Die genaue Arbeitsweise und die Bedeutung z.B. der Parameter erhält man durch das Hilfesystem von NetBeans. Man setzt dazu den Cursor im Editor auf einen Befehl und drückt die
rechte Maustaste. Aus dem Kontextmenü wählt man den Punkt Show Javadoc.
Geschieht das z. B. bei drawLine, so erhält man zuerst eine Übersicht über die Klasse Graphics, aus der man die Details für drawLine auswählen kann.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
5.
(einige) Grafikbefehle
clearRect(int,int,int,int)
draw3DRect(int,int,int,int,boolean)
drawArc(int,int,int,int,int,int)
drawLine(int,int,int,int)
drawOval(int,int,int,int)
drawPolygon(int[],int[],int)
drawRect(int,int,int,int)
drawRoundRect(int,int,int,int,int,int)
drawString(string,int,int)
fill3DRect(int,int,int,int,boolean)
fillArc(int,int,int,int,int,int)
fillOval(int,int,int,int)
fillPolygon(int[],int[],int)
fillRect(int,int,int,int)
fillRoundRect(int,int,int,int,int,int)
setColor(Color)
setXORMode(Color)
setPaintMode(Color)
6.
S. 16
löscht ein Rechteck
zeichnet ein Rechteck
zeichnet einen Kreisbogen
zeichnet eine Linie
zeichnet eine Ellipse
zeichnet ein Polygon
zeichnet ein Rechteck
zeichnet ein abgerundetes Rechteck
zeichnet einen Text
zeichnet ein gefülltes Rechteck
zeichnet einen gefüllten Kreisbogen
zeichnet eine gefüllte Ellipse
zeichnet ein gefülltes Polygon
zeichnet ein gefülltes Rechteck
zeichnet ein gefülltes abger. Rechteck
setzt die Zeichenfarbe
setzt den invertierenden Zeichenmodus
setzt den „normalen“ Zeichenmodus
Ein erstes Beispiel
Wir wollen Zufallsrechtecke mit
Zufallsfarben auf den Bildschirm
„zaubern“. Dazu bestimmen wir
jeweils die obere linke Ecke eines
Rechtecks, seine Breite und seine
Höhe durch (geeignete) Zufallszahlen. Die erhalten wir durch eine nette Bitte an das Math-Objekt, uns
solche zu liefern: Math.random();
Die erhaltenen Zahlen liegen zwischen Null und Eins. Wir „strecken“
deshalb zuerst den Zahlenbereich
mit einem Faktor m und erhalten
Zufallszahlen zwischen Null und m,
danach bitten wir erneut das MathObjekt, das Ergebnis zu runden:
Math.round(Math.random()*m);
Da das Ergebnis nicht unbedingt eine ganze Zahl vom Typ int sein muss, erzwingen wir eine
entsprechende Typwandlung (type-casting), indem wir die Anweisung (int) voranstellen.
(int)Math.round(Math.random()*m);
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
S. 17
Eckart Modrow
Wenn wir mehrmals Zufallszahlen dieser Art erzeigen wollen, dann stellen wir am besten eine
entsprechende Funktion bereit, die solche Zahlen berechnen. Der Rückgabewert der Funktion
ist int. Mit return definieren wir diesen Wert.
public int zz(int m)
{
return (int)Math.round(Math.random()*m);
}
Variable müssen in Java zusammen mit ihrem Wert vereinbart werden, bevor man sie benutzen kann. Für unsere Rechtecke benötigen wir vier ganze Zahlen x, y, b und h, die die obere
linke Ecke sowie Breite und Höhe des Rechtecks beschreiben. Weil wir noch eine Zufallsfarbe bestimmen wollen, vereinbaren wir diese gleich mit.
int x,y,b,h;
Color c;
Allgemein muss eine Variablenvereinbarung der folgenden Syntax gehorchen:
Variablentyp
;
Variablenname
=
Wert
,
Als Typen stehen Zahlen (int, double, long, ...), Wahrheitswerte (boolean), Zeichenketten
(String), Farben (Color) und weitere Klassen zur Verfügung. Die Vorgabewerte müssen natürlich dem Datentyp der Variablen entsprechen.
In unserem Programm wollen wir jeweils 10 Zufallsrechtecke zeichnen. Da hierfür immer die
gleichen Vorgänge (Zufallszahlen und Farben bestimmen, Rechtecke zeichnen, ...) erforderlich sind, packen wir diese in eine Zählschleife, die dafür sorgt, dass der Schleifenkörper so
oft ausgeführt wird, wie der Schleifenkopf angibt.
for (int i=0;i<max;i++)
{
...
Die Zählvariable i erhält anfangs den Wert 0.
Die Schleife wird ausgeführt, solange i kleiner
als max ist (Abbruchbedingung). Nach jedem
Durchlauf wird i um 1 erhöht.
}
Allgemein muss eine Zählschleife der folgenden Syntax gehorchen:
for
(
;
;
Initialisierung
Aktualisierung
)
Abbruchbedingung
{
Befehle
}
• Im Initialisierungsteil werden Variable vereinbart und Anfangswerte gesetzt.
• In der Abbruchbedingung wird vereinbart, unter welchen Bedingungen die Schleife weiter ausgeführt werden soll.
• Im Aktualisierungsteil werden die Werte der Variablen verändert.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
S. 18
Innerhalb der Schleife basteln wir in unserem Programm aus den Farbwerten Rot, Grün und
Blau im RGB-System eine Zufallsfarbe zusammen, mit der wir die Rechteckfläche zeichnen.
Dann wird noch ein etwas breiterer weißer Rand erzeugt.
import java.awt.*;
import java.applet.*;
public class Mondrian extends Applet
{
int max=10; //Anzahl der Rechtecke
eine Variable
public int zz(int m)
{
return (int)Math.round(Math.random()*m);
}
eine selbst geschriebene Funktion, die aus der
Mathematikbibliothek „Math“
die Methoden
„round()“ und
„random()“ benutzt.
public void paint(Graphics g)
{
int x,y,b,h;
Color c;
for (int i=0;i<max;i++)
{
x = zz(50)+10;
Farbe aus Zufallszahlen
y = zz(30)+10;
zusammenbasteln
b = zz(600-x-20)+10;
h = zz(400-y-20)+10;
c = new Color(zz(255),zz(255),zz(255));
g.setColor(c);
g.fillRect(x,y,b,h);
g.setColor(Color.white);
Rechteck mit Rand
g.drawRect(x,y,b,h);
zeichnen
g.drawRect(x+1,y+1,b-2,h-2);
g.drawRect(x+2,y+2,b-4,h-4);
}
}
}
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit NetBeans/BlueJ
Eckart Modrow
7.
Aufgaben
1. a: Erzeugen Sie Zufallsrechtecke auf dem
Bildschirm. Sie können das Programm
mehrfach ausführen, indem Sie „Aktualisieren“ im Browser anklicken.
b: Sorgen Sie dafür, dass die Rechtecke farbig werde.
c: Wählen Sie die Zufallsfarben „geschmackvoll“, also nicht beliebig, sondern
gezielt. Sie könnten z.B. Farben überwiegend aus dem Bereich grün-blau wählen,
mit gelegentlichen gelben „Ausrutschern“.
2. a: Erzeugen Sie gefüllte Zufallsrechtecke auf
dem Bildschirm. Informieren Sie sich dazu über die Methode SetXORMode() des
Graphics-Objekts.
b: Sorgen Sie dafür, dass die Rechtecke farbig werden.
c: Wählen Sie wiederum „geschmackvolle“
Zufallsfarben (s. Aufgabe 1.c).
d: Entsteht in Ihrem Programm eine „Gewichtung“ der Zufallsrechtecke wie in den
nebenstehenden Beispielen? („Kleinere
Strukturen unten-rechts.“) Wie kommt
das? Kann man den Effekt gezielt erzeugen? Kann man andere Gewichtungen erzielen?
3. a: Informieren Sie sich im Hilfesystem über
die Methode fillArc() des GraphicsObjekts. Erzeugen Sie eine Grafik ähnlich
der nebenstehenden mit Hilfe dieser Methode.
b: Wechseln Sie bei den Figuren (zufallsgesteuert?) zwischen Rechtecken, Ellipsen,
Polygonen, ...
c: Versuchen Sie es einmal mit „Zufallstexten“, also Texten, die zufällig über den
Bildschirm verteilt werden. Informieren
Sie sich im Hilfesystem über die Methode
drawString() des Graphics-Objekts.
S. 19
Herunterladen