Eckart Modrow, XLAB

Werbung
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit J++
Eckart Modrow
S. 1
1. Erzeugen eines neuen leeren Applets
Applets sind Java-Programme, die in einem Browser ablaufen. Zu diesem Zweck gehört zum
Applet immer eine HTML-Seite, die das Applet aufruft. Mit J++ können wird beides (Applet
und HTML-Seite) zusammen erzeugen. Dazu starten wir J++ und wählen den Menüpunkt
Datei Æ Neues Projekt
Darin
•
wählen wir Applet für HTML (voreingestellt)
•
vergeben einen aussagekräftigen Namen, z.B. Ballspiel
•
und wählen als Pfad ein geeignetes Verzeichnis unter Laufwerk u:/Java
Danach klicken wir den Button Öffnen an.
Wir erhalten einen Bildschirm, der im wesentlichen leer ist. An der Seite befindet sich die
Projektmappe mit dem gewählten Namen, die, wenn wir sie öffnen (Anklicken des <+>Symbols), zwei Dateien anzeigt: Applet1.java und Page1.htm, die benötigten Dateien.
Doppelklicken wir auf eine der Seiten, dann erscheint deren Quelltext im großen Fenster.
Das Projekt enthält jetzt ein lauffähiges Applet, das wir direkt übersetzen und ausführen können. Wir klicken dazu den Pfeil (►) in der oberen Befehlsleiste an. Nach kurzer Zeit erscheint das Applet im Browser.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit J++
Eckart Modrow
S. 2
2. Die HTML-Startdatei
Die HTML-Datei kann in drei Versionen angezeigt werden: Entwurf, Quelle und Vorschau. In der Quelle-Version wird der HTML-Text angezeigt. Wenn das zu startende Applet
schon übersetzt ist, dann wird es auch in dieser Darstellung angezeigt. Wollen wir das nicht,
dann klicken wir mit der rechten Maustaste auf das Applet und wählen die Option <Immer
als Text anzeigen>. Es erscheint dann das Start-Tag des Applets.
Unsere HTML-Seite enthält den Text:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<P> </P>
<!-- Fügen Sie hier HTML hinzu -->
<applet
weitgehend überflüssig!
code=Applet1.class
name=Applet1
width=320
height=200 VIEWASTEXT>
<param name=label value="Diese Zeichenfolge wurde vom HTML-Host
übergeben.">
<param name=background value="008080">
<param name=foreground value="FFFFFF">
</applet>
</BODY>
</HTML>
Da das Applet „schon etwas tut“, sind einige Anweisungen speziell. Wir lassen sie erst mal
weg und erhalten eine sehr einfache Seite:
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit J++
Eckart Modrow
S. 3
<HTML>
Das Applet-Tag
<HEAD></HEAD>
<BODY>
<applet code=Applet1.class width=320 height=200>
</applet>
</BODY>
</HTML>
Codedatei des
Applets
Größe des
Applets
3. Die Java-Datei
Die Java-Datei enthält noch viel mehr (erst mal) überflüssige Anweisungen, so dass wir fasst
alles weglassen können. Wir erhalten das Minimalgerüst eines Applets (das nichts tut):
import java.awt.*;
benutzte Bibliotheken (immer angeben)
import java.applet.*;
public class Applet1 extends Applet
{
das Applet
}
Damit überhaupt etwas passiert, fügen wir jetzt einen Zeichenbefehl ein (die „Theorie“ dazu
folgt später).
import java.awt.*;
import java.applet.*;
public class Applet1 extends Applet
{
public void paint(Graphics g)
{
g.drawLine(10,10,100,100);
}
}
Damit erhalten wir eine Linie vom Punkt (10/10) zum Punkt (100/100). Wir haben den Grafik-Kontext g „gebeten“, eine entsprechende Linie zu zeichnen.
Wenn wir eine Linie zeichnen können, dann stehen uns alle grafischen Möglichkeiten offen!
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit J++
Eckart Modrow
S. 4
4. Ausführung im Applet-Viewer
Statt im Browser können Applets (und Anwendungen) auch im Viewer JView.exe angezeigt
werden. Die Ladezeiten sind dann wesentlich geringer. Man muss diese Option unter dem
Menüpunkt Projekt ÆEigenschaften auswählen. Wählen Sie benutzerdefiniertes Starten
und geben sie JView.exe als Startprogramm an. Als Argumente übergeben Sie ähnlich wie in
der HTML-Datei bei Applets die Option /a und die Größe des Applets über width und height.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit J++
S. 5
Eckart Modrow
5. Übersetzen von Programmen
Man schreibt ein Java-Applet im Editor. Schon bei der Eingabe werden sehr viele Fehler von
J++ erkannt und angezeigt (durch „Unterkringeln“). Manchmal muss man ein bisschen warten, damit sich J++ den Text „ansehen“ kann. 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 Fenster Aufgabenliste angezeigt. Klickt man auf die Fehleranzeige, dann springt der Cursor in die entsprechende Zeile.
Während der Eingabe blendet J++ mögliche Optionen ein. Schreibt man also z.B. „g.“ (d.h. g
und „Punkt“) und wartet einen Augenblick, dann erscheint ein Fenster mit den möglichen
Methoden von g, 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, die 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 JavaProgramme auf allen diesen Rechnern unabhängig vom Betriebssystem ablaufen. (Leider arbeiten die verschiedenen Java-VMs nicht 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;
…..
}
Quellcode
(in nnn.java)
Übersetzung
durch J++
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 (F11)
und die aktuellen Werte der Variablen im Überwachungsfenster verfolgt werden.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit J++
Eckart Modrow
S. 6
6. Aufbau eines Applets
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 automatisch aufgerufen.
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.
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen
Java-Applets mit J++
Eckart Modrow
S. 7
7. (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)
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
8. Das Hilfesystem
Die genaue Arbeitsweise und die Bedeutung z.B. der Parameter erhält man durch das Hilfesystem von J++. Man setzt dazu den Cursor im Editor auf einen Befehl und drückt die F1Taste. Danach erhält man eine Liste von passenden Hilfethemen. Im Feld Aktive Untermenge sollte man die Option Visual J++-Dokumentation wählen, um Hilfe zu anderen Programmiersprachen (C++, Visual Basic, ...) usw. auszublenden. Man wählt einen Java-Bezug
aus. Mit der Option Class Members oben auf der Seite kann man die Details (Methoden,
Eigenschaften) anzeigen lassen.
Herunterladen