Applet
aus ZUM-Wiki, dem Wiki für Lehr- und Lerninhalte auf ZUM.de
| Kurzinfo | ||
|---|---|---|
| ||
| ||
| ||
|
Inhaltsverzeichnis |
Was sind Applets – Theoretischer Hintergrund
- Ein Java-Applet ist ein kleines Computerprogramm, das in der Programmiersprache Java verfasst wurde.
- Java-Applets wurden eingeführt, um Programme in Web-Seiten ablaufen lassen zu können, die im Webbrowser (auf der Client-Seite) arbeiten und direkt mit dem Benutzer interagieren können, ohne Daten über die Leitung zum Server versenden zu müssen.
- Java-Applets waren Ende der 1990er Jahre ein Hauptgrund für den Erfolg und die schnelle Verbreitung von Java. (...)
- Applets werden auf dem Rechner des Anwenders ausgeführt und stellen daher - wie jedes lokal ausführbare Programm - ein Sicherheitsrisiko dar. Da die Applets in einer abgeschotteten Laufzeitumgebung (Sandbox) laufen, ist dieses Risiko jedoch gut kontrollierbar. Ein Sicherheitsrisiko durch "böswillige" Applets besteht nur, wenn die Sandbox fehlerhaft ist.
- nach http://de.wikipedia.org/wiki/Java-Applet , 03.05.2006
Kennzeichen von Applets
Sie verfügen unter anderen über die folgenden Methoden:
init() - wird genau einmal aufgerufen, wenn das Applet erstmals in den Browser geladen wird. start() - wird jedesmal aufgerufen, wenn das Applet sichtbar wird. paint(...) - Zeichenmethode für die Anzeigefunktionen des Applet stop() - wird jedesmal aufgerufen, wenn das Applet verdeckt wird, z.B. weil das Browser-Fenster von einem anderen Fenster überdeckt wird. destroy() - wird aufgerufen, wenn das Applet aus dem Hauptspeicher entladen wird.
- nach http://de.wikipedia.org/wiki/Java-Applet , 03.05.2006
Beispiel 1
Ein einfaches Beispiel HalloWelt.java (hier wird nur paint() überschrieben um gezielt ab der Stelle 100,100 den Text ausgeben zu können):
import java.awt.*; import java.applet.Applet; public class HalloWelt extends Applet { public void paint( Graphics g ) { g.drawString( "Mein erstes Java-Applet!",100,100 ); // Grafik-Text } }
- Quelltext aus: http://de.wikibooks.org/wiki/Java_Standard:_Applets
|
Testen Sie das Applet. Ändern Sie Text und Position der Ausgabe. Fügen Sie eine zweite Ausgabe hinzu. |
Shapes
Die Schnittstelle um graphische Objekte wie Shapes, oder aber auch Bilder zu zeichnen, ist in Java das Graphics-Objekt.
Ausgabe eines Strings:
- g.drawString( "Mein erstes Java-Applet!",100,100 );
Ausgabe eines Strings mit anderem Zeichensatz und Farbe
- g.setFont(new Font("Dialog", Font.PLAIN, 18));
- g.setColor(Color.BLUE);
- g.drawString("Hallo Welt", 10,40);
Ausgabe eines ausgefüllten abgerundeten Rechtecks
- g.fillRoundRect(startX,startY,breite,hoeher,radiusAbrundungX,radiusAbrundungY);
Zum Beispiel:
- g.fillRoundRect(50,70,20,30,10,20);
aus: http://de.wikibooks.org/wiki/Java_Standard:_Das_Graphics_Object
In der offiziellen Java-Dokumentation finden Sie alle Methoden der Klasse Graphics hier:
Ein Haus
import java.awt.*; import java.applet.Applet; public class HalloWelt extends Applet { public void paint( Graphics g ) { g.setColor(Color.BLUE); g.drawRect(100,150,200,100); g.setColor(Color.RED); g.drawLine(100,150,200,50); g.drawLine(300,150,200,50); } }
|
Zufallsfigur
import java.awt.*; import java.applet.Applet; import java.util.Random; public class Zufallsfigur extends Applet { private static final Random rand = new Random(); public void paint( Graphics g ) { g.setColor(Color.BLUE); for (int i = 1; i <= 1000; i++) { g.setColor(Color.RED); g.drawString(""+rand.nextInt(500), i*10,i*10); g.setColor(Color.BLUE); g.drawLine(rand.nextInt(500), rand.nextInt(500), rand.nextInt(500), rand.nextInt(500)); } } }
|
Applets und Threads
„Nebenläufigkeit (concurrency) ist die Fähigkeit eines Systems zwei oder auch mehrere Aufgaben (scheinbar) gleichzeitig auszuführen. In Java kann die Ausführungsparallelität innerhalb eines Programmes mittels Threads (lightweight processes) erzwungen werden.“
Das folgende Applet zeichnet alle halbe Sekunde 5 Linien auf den Bildschirm.
import java.awt.*; import java.applet.Applet; import java.util.Random; public class ZufallsfigurMitThread extends Applet implements Runnable { Thread thread; private static final Random rand = new Random(); public void init() { thread= new Thread(this); // thread ist ein neuer Thread dieses Applets thread.start(); // starte den Thread } public void destroy() { thread = null; // Beim Verlassen des Applets setze den Thread auf null } public void run() { while (true) // solange true, also immer { repaint(); // rufe paint auf try // und versuche, 500 Millisekunden zu warten { Thread.sleep(500); } catch (InterruptedException e) // wenn das mit dem Warten nicht geklappt hat, { System.out.println(e); // dann gib einen Fehler aus. } } } public void paint( Graphics g ) { g.setColor(Color.BLUE); for (int i = 1; i <= 5; i++) { g.setColor(Color.BLUE); g.drawLine(rand.nextInt(500), rand.nextInt(500), rand.nextInt(500), rand.nextInt(500)); } } }
|
GUI und Applet
Kaum ein modernes Programm kommt heutzutage ohne eine ansprechende GUI aus. Daher hier nun ein Beispiel, wie man mit Beschriftungen und Buttons in Java umgeht.
Grobe Erklärung der Funktionsweise: Ein neuer Button wird angelegt. Dieser bekommt einen ActionListener zugewiesen. Der sorgt dafür, dass actionPerformed aufgerufen wird, wenn der Button gedrückt ist. Da man manchmal mehrere Elemente hat, prüft man mit if (evt.getSource() == button), ob das ActionEvent „evt“ auch wirklich vom Button button stammt.
Vertiefend:
- http://de.wikibooks.org/wiki/Java_Standard:_Grafische_Oberfl%C3%A4chen_mit_AWT
- http://www.realapplets.com/tutorial/ActionExample.html
import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class GUI_1 extends Applet implements ActionListener { Label label; Button button; int anzahl; public void init() { button = new Button("Schaltfläche"); button.addActionListener(this); add (button); label = new Label("Du hast kein mal gedrückt"); add(label); } public void actionPerformed(ActionEvent evt) { if (evt.getSource() == button) { anzahl++; label.setText("Du hast "+anzahl+" mal gedrückt"); repaint(); } } }
|
Textfeld
Die folgende Klasse verwendet neben Buttons und Labels auch Textfelder. In diesen können Benutzer Eingaben tätigen, die mit getText() abgefragt werden können. setText(...) ändert den Text.
Vertiefend:
import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class GUI_2 extends Applet implements ActionListener { Label label; Button button; TextField textfield; int anzahl; public void init() { textfield = new TextField("niemand"); add (textfield); button = new Button("Begrüße"); button.addActionListener(this); add (button); label = new Label("Ich kenne dich nicht!"); add(label); } public void actionPerformed(ActionEvent evt) { if (evt.getSource() == button) { label.setText("Hallo "+textfield.getText()); repaint(); } } }
Textarea
Mehrzeilige Texteingabefelder können Sie mit der Klasse TextArea erstellen. Zusätzlich zu dem Anfangstext gibt man beim Anlegen noch die Zeilenanzahl und die Breite in Buchstaben an. Hinweis: \n wechselt im TextArea die Zeile, führt aber z.B. in einzeiligen Labels zu Problemen!
textarea = new TextArea("Hallo Welt!\nWo bist du?", 5,30));
Weitere GUI-Elemente
Wie Menus, Radiobuttons, Listen etc. sowie Tipps zum Layout finden Sie hier: http://de.wikibooks.org/wiki/Java_Standard:_Grafische_Oberfl%C3%A4chen_mit_AWT
Weblinks
- Diese Seite ist entnommen aus Kapitel 3 des Readers von Uli Pieper
- Kurzübersicht - ein Fachreferat
- Einige Beispiele
- Taschenrechner Applet
- Ein Kurs basierend auf Applets
Seite bookmarken