Grafische Benutzeroberfläche mit Java-Applets

Größe: px
Ab Seite anzeigen:

Download "Grafische Benutzeroberfläche mit Java-Applets"

Transkript

1 Grafische Benutzeroberfläche mit Java-Applets Joachim u. Marion Lammarsch, Rothenberg Mai 2002 Diese Unterlagen dienen lediglich der Arbeitserleichterung der Kurs-Teilnehmer. Sie sind kein Handbuch oder Kurs im Selbststudium. Vervielfältigung und die darüber hinaus gehende Verwendung ist nur mit Zustimmung der Autoren erlaubt. c MMII Joachim u. Marion Lammarsch, Rothenberg () G 1

2 Anders als bei anderen Programmiersprachen wurde Java mit der Vorgabe entwickelt, eine grafische Benutzeroberfläche zur Verfügung zu stellen. Daher stellt Java das Paket Abstract Windows Toolkit (java.awt) bereit, das Klassen für folgende Tätigkeiten enthält: 1. Einfache Methoden zur Ausgabe von Text, zum Zeichnen von Linien, Kurven und Flächen, zur Verwendung unterschiedlicher Schriften und Farben. 2. Dialogelemente wie Label, Tasten, Listen, Boxen und Elemente zur Ein- und Ausgabe von Text. 3. Methoden zur Steuerung von Ereignissen, beispielsweise durch das Drücken einer Taste oder das Bewegen der Maus. 4. Methoden zur Darstellung von Bildern und Ausgabe von Musik. Um die Möglichkeiten noch mehr zu erweitern, wurde zusätzlich noch das Paket Swing (javax.swing) entwickelt. Allerdings ist das Arbeiten mit dem Paket AWT einfacher zu überblicken. Um das AWT zu verwenden, bietet Java zwei Alternativen Klasse Applet Die Ausgabe dieser Klasse wird mittels eines Browsers am Bildschirm dargestellt. Klassen Frame und Dialog Sie ermöglichen, aus einer Applikation heraus Fenster zu öffnen. c MMII Joachim u. Marion Lammarsch, Rothenberg () G 2

3 Kapitel 1 Grundlagen des Arbeitens mit Applets Applets müssen mittels einer Software am Bildschirm dargestellt werden. Die Methoden zur Kommunikation mit dieser Software (Internet Browser) stellt die Klasse Applet des Pakets java.applet bereit. Applets müssen in HTML-Dokumente eingebunden werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 3

4 1.1 Klassenhierachie von Applet Die Klasse Applet erbt von den Klassen: java.lang.object +--java.awt.component +--java.awt.container +--java.awt.panel +--java.applet.applet c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 4

5 1.2 Ausgabemöglichkeiten Zur Ausgabe von grafischen Elementen ist eine grafische Oberfläche erforderlich. Diese muss bei der Verwendung von Applets in Form eines Web-Browsers zur Verfügung stehen. Beispielsweise kann verwendet werden: Netscape Internet Explorer Opera Zur Überprüfung und als Referenz stellt Java das Kommando appletviewer bereit. Syntax: appletviewer dateiname.html c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 5

6 Beispiel Hallo (Java-Datei): 1 // Erstes Beispiel 2 3 public class Hallo01 extends java.applet.applet 4 { 5 public void paint(java.awt.graphics g) 6 { 7 g.drawstring("hallo, viel Erfolg mit Java!",100,50); 8 } 9 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 6

7 Beispiel Hallo (HTML-Datei): 1 <HTML> 2 <HEAD> 3 <TITLE>Hallo Applet</TITLE> 4 </HEAD> 5 <BODY> 6 <APPLET code="hallo01.class" width=350 height=90></applet> 7 </BODY> 8 </HTML> c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 7

8 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 8

9 1.3 Unterschiede von Applets versus Applikationen Java-Programme (Applikationen) und Java-Applets unterscheiden sich gar nicht so stark voneinander. Sie werden mit denselben Werkzeugen und Techniken konstruiert. Die wesentlichen Unterschiede sind: Java-Applikationen sind eigenständige Programme, die zur Ausführungszeit den Stand- Alone-Java-Interpreter benötigen, während Java-Applets aus HTML-Seiten heraus aufgerufen werden und zur Ausführung einen Web-Browser benötigen. Statt der Methode main() bei Java-Applikationen wird für Applets die Steuerung verschiedener Ereignisse beispielsweise Initialisierung, Bildschirmausgabe, Tastatur- und Mausbewegungen benötigt. Diese Interaktion muß mit dem Browser erfolgen, der die entsprechenden Methoden aufrufen muß. Daher werden alle Applets von der Klasse java.applet.applet abgeleitet, die die benötigten Methoden vordefiniert hat. Aus Gründen der Sicherheit kann ein Applet normalerweise weder auf Dateien des Rechners zugreifen noch kann es weitere Programme starten. Eine Ausnahme stellen die signierten Applets dar. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 9

10 1.4 Kommunikation mit dem Browser Für die Verbindung zwischen Applets und Browser stellt das Paket java.applet bzw. die darin enthaltene Klasse Applet folgende Methoden zur Verfügung. Applet() public void init() {... } public void start() {... } public void stop() {... } public void destroy() {... } Benutzeraktion im Browser Starte Browser Lade HTML-Seite Verlasse HTML-Seite Lade HTML-Seite erneut Beende Browser Methode im Applet Applet() init, start stop start stop, destroy Die Kommunikation zwischen einem Applet und seinem Browser läuft über Methodenaufrufe ab. Die aus dem Applet abgeleitete Klasse ist dafür verantwortlich die Methoden zu überlagern und mit der erforderlichen Funktionalität auszustatten. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 10

11 1.4.1 Instanzierung des Applets Hierzu ruft der Browser ein Objekt der abgeleiteten Applet-Klasse auf, den parameterlosen Default-Konstruktor: Syntax: public Applet(); Initialisierung des Applets Nach der Instanzierung ruft der Browser die Methode init auf, um dem Applet die Möglichkeit zu geben, Initialisierungen vorzunehmen: Syntax: public void init() { init-programmcode } Diese Methode wird nur einmal aufgerufen. Wird sie nicht benötigt, braucht sie nicht initialisiert werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 11

12 1.4.3 Starten des Applets Nachdem die Initialisierung abgeschlossen ist, wird die Methode start aufgerufen, um die Ausführung des Applets zu starten: Wird sie nicht benötigt, braucht sie nicht initialisiert werden. Syntax: public void start() { start-programmcode } Das Starten eines Applets kann mehrfach erfolgen. Wenn der Browser eine andere Web-Seite lädt, wird das Applet nur gestoppt. Beim erneuten Aufruf der Seite wird die Methode start wieder aufgerufen. Wird sie nicht benötigt, braucht sie nicht initialisiert werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 12

13 1.4.4 Stoppen des Applets Durch Aufrufen der Methode stop zeigt der Browser dem Applet an, dass es gestoppt werden soll: Syntax: public void stop() { stop-programmcode } Da ein Applet mehrfach gestartet und gestoppt werden darf, dürfen keine Resourcen entfernt werden, die bei einem eventuellen Neustart wieder notwendig sind. Wird die Methode nicht benötigt, braucht sie nicht initialisiert werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 13

14 1.4.5 Zerstören des Applets Wenn ein Applet nicht mehr benötigt wird, beispielsweise beim Beenden des Browsers, ruft der Browser die Methode destroy auf: Syntax: public void destroy() { destroy-programmcode } Diese kann überlagert werden, um auch noch Aufräumarbeiten zu erledigen. Wird sie nicht benötigt, braucht sie nicht initialisiert werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 14

15 1.4.6 Einbinden eines Applets Die Einbindung eines Applets in ein HTML-Dokument erfolgt unter Verwendung des HTML- Tags APPLET. Syntax: <APPLET CODE="Klassenname.class" WIDTH=nnn HEIGHT=nnn> Falls das Applet nicht aufgerufen werden kann, soll ersatzweise dieser Text ausgegeben werden. </APPLET> Durch diesem Parameter wird der Name des Applets (mit Suffix) ange- CODE= geben. WIDTH= HEIGHT= Durch diesen Parameter muss die Breite des Applets angegeben werden. Durch diesen Parameter muss die Höhe des Applets angegeben werden. Neben weiteren möglichen Parametern sind diese drei Parameter zwingend erforderlich. nnn gibt das Maß in Bildschirmpunkten an. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 15

16 1.4.7 Anzeigen eines Applets Neben der üblichen Darstellung durch einen Web-Browser kann der Aufbau des Applets in der Entwicklungsphase duch den Appletviewer kontrolliert werden. Syntax: appletviewer dateiname.html Da viele Web-Browser sich bei der Darstellung eines Applets unterschiedlich verhalten, ist der Appletviewer eine Referenz, die SUN zur Kontrolle mitliefert. Es wird allerdings nur das Applet dargestellt, die HTML-Seite, die das Applet aufruft, wird ignoriert. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 16

17 Beispiel Java-Kode: 1 public class Appl01 extends java.applet.applet 2 { 3 public void init() 4 { 5 System.out.println("Init()"); 6 } public void start() 10 { 11 System.out.println("Start()"); 12 } public void stop() 16 { 17 System.out.println("Stop()"); 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 17

18 21 public void destroy() 22 { 23 System.out.println("Destroy()"); 24 } 25 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 18

19 Beispiel Zugehöriger HTML-Kode: 1 <HTML> 2 <HEAD> 3 <TITLE> Hello! </TITLE> 4 </HEAD> 5 <BODY> 6 Hier ist unser Test: 7 8 <p> 9 <APPLET CODE="Appl01.class" WIDTH=500 HEIGHT=300> 10 </APPLET> 11 </p> </BODY> 14 </HTML> c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 19

20 Applet-Struktur Objekt Container Panel Applet Helo01 Die meisten Klassen erweitern (extend) andere Klassen. Eine Klasse zu erweitern bedeutet eine neue Klasse zu schreiben, die die Methoden der Ausgangsklasse beinhaltet. Die Ausgangsklasse heisst Eltern- Klasse, die erweiterte Klasse heisst Kind-Klasse. Mit anderen Worten beinhaltet die Kind-Klasse die Methoden der Eltern-Klasse. Die Klasse Appl01 erweitert die Klasse Applet (vgl. Zeile 1), die die Methoden init, start, stop und destroy enthält. Die Klasse Applet erweitert die Klasse Panel. Die Klasse Panel erweitert die Klasse Container, die u.a. die Methode paint enthält. Die Klasse Container erweitert die Klasse Component. Die Klasse Component erweitert die Klasse Objekt, die die Eltern-Klasse aller Java-API-Klassen (Java-Application Programming Interface-Klassen) ist. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grapplet.tex) G 20

21 Kapitel 2 Grundlagen des Arbeitens mit Frames Frames (Fenster) für Applikationen werden mit der Klasse frame realisiert. Wenn eine Fenster-Abhängigkeit realisiert werden soll, kann man die Klasse Dialog verwenden. Applets können diesen Mechanismus nicht einsetzen, da Dialoge aufgrund von Sicherheitseinschränkungen nicht benutzt werden können. Die Klassen Frame und Dialog sind im Paket java.awt enthalten. Die Klasse Frame bildet Fenster, die Rahmen und Titelleiste enthalten. Sie sind als Applikation mit der Java VM aufrufbar. Sie können nicht mit dem Appletviewer oder einem Internet-Browser gestartet werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 21

22 2.1 Klassenhierarchie von Frame Die Klasse Frame bildet Fenster, die Rahmen und Titelleiste enthalten. Sie sind als Applikation mit der Java VM aufrufbar. Sie benötigen daher keinen Appletviewer oder Internet- Browser. Die meisten Befehle des AWT sind verwendbar. Die Klasse Frame erbt von den Klassen: java.lang.object +--java.awt.component +--java.awt.container +--java.awt.window +--java.awt.frame c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 22

23 2.2 Konstruktoren Die Klasse Frame stellt einige Konstruktoren zur Verfügung. Syntax: Frame() Frame(String titel) Frame(GraphicsConfiguration gc) Der Konstruktor Frame() generiert ein Fenster ohne Titel, mit Frame(String titel) erhält man ein Fenster mit dem Titel titel, der als Parameter übergeben wird.. Mit Frame(GraphicsConfiguration gc) kann man das Fenster dem Ausgabegerät (d.h. Bildschirm, Drucker, usw.) anpassen. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 23

24 2.3 Methoden Die Klasse Frame stellt folgende Methoden zur Verfügung: void pack() generiert ein Fenster in der Größe, das alle Komponenten enthält. void show() void hide() stellen ein Fenster am Bildschirm dar, bzw. verbergen es wieder. String gettitle() void settitle(string titel) ermittelt den Titel eines Fensters, bzw. setzt diesen Titel. MenuBar getmenubar() void setmenubar(menubar menu) erfragt bzw. setzt ein MenuBar-Objekt in ein Fenster. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 24

25 Beispiel: 1 import java.awt.*; 2 3 public class Hallo00 4 { 5 public static void main(string[] args) { 6 Frame f = new Frame("Dies ist ein Frame-Beispiel"); 7 f.setsize(300,50); 8 f.show(); 9 } 10 } Das Schließen dieses Fensters ist nur durch Abbruch des Programms möglich. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 25

26 2.4 Window-Listener Wenn ein Fenster geöffnet, geschlossen, ikonifiziert, deikonifiziert, aktiviert oder deaktiviert wird, wird ein Fenster-Ereignis generiert. Wird dieser Vorgang nicht überwacht, so geschieht nichts. So geschieht beispielsweise nichts, wenn ein Fenster geschlossen wird. Erst das Erfassen dieses Ereignisses, gekoppelt mit der Anweisung ein Fenster zu schließen, ergibt die gewünschte Aktion. Das Interface WindowListener bzw. die Adapterklasse WindowAdapter enthalten die folgenden Methoden: void windowopened(windowevent) wird aufgerufen, wenn das vom Listener überwachte Fenster das erste Mal sichtbar wurde. void windowclosing(windowevent) wird aufgerufen, wenn eine Benutzeranforderung vorliegt, das vom Listener überwachte Fenster zu schließen. void windowclosed(windowevent) c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 26

27 wird aufgerufen, wenn das vom Listener überwachte Fenster geschlossen wurde. void windowiconified(windowevent) void windowdeiconified(windowevent) wird aufgerufen, nachdem das vom Listener überwachte Fenster ikonifiziert bzw. deikonifiziert wurde. void windowactivated(windowevent) void windowdeactivated(windowevent) wird aufgerufen, nachdem das vom Listener überwachte Fenster aktiviert bzw. deaktiviert wurde. Jede dieser Methoden verwendet ein Objekt vom Datentyp WindowEvent als Parameter. WindowEvent stellt eine Methode zur Verfügung, über die man auf das Fenster-Objekt zugreifen kann. Window getwindow() c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 27

28 Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Frame01 5 { 6 public static void main(string[] args) 7 { 8 // Instanz fuer Frame erzeugen 9 Frame f = new Frame("Dies ist ein Window-Event-Beispiel"); 10 f.setsize(300,100); 11 f.setvisible(true); f.addwindowlistener( new WindowAdapter() 14 { 15 public void windowiconified(windowevent e) 16 { 17 System.out.println("Fenster wird ikonifiziert."); 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 28

29 21 public void windowdeiconified(windowevent e) 22 { 23 System.out.println("Fenster wird deikonifiziert."); 24 } public void windowclosing(windowevent e) 27 { 28 System.out.println("Fenster wird geschlossen."); 29 } 30 } 31 ); 32 } 33 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 29

30 Soll ein Fenster geschlossen werden, dann muss es aktiv geschlossen werden. Hierzu gibt es die Methode dispose. Syntax: void dispose() dispose() gibt alle Bildschirm-Resourcen frei. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 30

31 Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Frame02 5 { 6 public static void main(string[] args) 7 { 8 // Instanz fuer Frame erzeugen 9 Frame f = new Frame("Dies ist ein Window-Event-Beispiel"); 10 f.setsize(300,100); 11 f.setvisible(true); f.addwindowlistener( new WindowAdapter() 14 { 15 public void windowiconified(windowevent e) 16 { 17 System.out.println("Fenster wird ikonifiziert."); 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 31

32 21 public void windowdeiconified(windowevent e) 22 { 23 System.out.println("Fenster wird deikonifiziert."); 24 } public void windowclosing(windowevent e) 27 { 28 e.getwindow().setvisible(false); 29 e.getwindow().dispose(); 30 System.out.println("Fenster wird geschlossen."); 31 System.exit(0); 32 } 33 } 34 ); 35 } 36 } Hier wird mittels der Methode setvisible(false) das Fenster geschlossen, mit der Methode dispose() die Fenster-Resourcen freigegeben und mit System.exit(0) das Programm beendet. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 32

33 Da ein WindowListener in vielen Programmen mit graphischer Oberfläche benötigt wird, ist es nützlich, dafür eine eigene Klasse vorzusehen. Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Frame03 5 { 6 // WAdapt soll nicht vererbt werden, daher static 7 static class WAdapt extends WindowAdapter 8 { 9 public void windowclosing(windowevent e) 10 { 11 e.getwindow().setvisible(false); 12 System.exit(0); 13 } 14 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 33

34 17 public static void main(string[] args) 18 { 19 Frame f = new Frame("Dies ist ein Frame..."); 20 f.setsize(300,100); 21 f.setvisible(true); 22 WAdapt wa = new WAdapt(); 23 f.addwindowlistener(wa); 24 } 25 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 34

35 Für diese Klasse kann man eine eigene Datei vorsehen. Beispiel Klasse WAdapt: 1 import java.awt.event.*; 2 3 class WAdapt extends WindowAdapter 4 { 5 public void windowclosing(windowevent e) 6 { 7 e.getwindow().setvisible(false); 8 e.getwindow().dispose(); 9 System.exit(0); 10 } 11 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 35

36 Beispiel: 1 import java.awt.*; 2 3 public class Frame04 4 { 5 public static void main(string[] args) 6 { 7 Frame f = new Frame("Dies ist ein Frame..."); 8 f.setsize(300,100); 9 f.setvisible(true); 10 WAdapt wa = new WAdapt(); 11 f.addwindowlistener(wa); 12 } 13 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grframe.tex) G 36

37 Kapitel 3 Einfache graphische Ausgabe Eine Möglichkeit in einem Fenster, d.h. Applet, Frame oder Dialog eine Ausgabe zu erzeugen ist die Methode paint. Ein Applet wird immer vom Web-Browser aufgerufen, wenn ein Applet neu bzw. teilweise angezeigt wird. Es bekommt ein Objekt der Klasse graphics übergeben. Die Ausgabe erfolgt durch Überlagern dieser Methode. Syntax: public void paint(graphics g) { // paint-programmcode } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dimension.tex) G 37

38 Grundlage für die Ausgabe ist ein Koordinatensystem, dessen Ursprung (x = 0, y = 0) die linke obere Ecke ist. Die Maßeinheit ist ein Pixel, d.h. ein Bildschirmpunkt. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dimension.tex) G 38

39 3.1 Größe eines Applets Um die Größe eines Applets zu bestimmen werden die Methoden getsize getwidth getheight Die Methode getsize gibt als Ergebnis ein Objekt der Klasse Dimension zurück, welches das Attribut width für die Breite und height für die Höhe des Applets enthält. Syntax: Dimension getsize(); Eine Alternative sind die Methoden getwidth und getheight der Klasse Component. Syntax: int getwidth(); int getheight(); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dimension.tex) G 39

40 Beispiel: 1 import java.awt.*; 2 3 public class Dimen11 extends java.applet.applet 4 { 5 Dimension dim; 6 int breite,hoehe; 7 8 public void init () { 9 dim=getsize(); 10 breite=getwidth(); 11 hoehe=getheight(); 12 } public void paint(graphics g) { 15 g.drawstring("die Dimensionen des Applets sind (" + 16 dim.width + "," + dim.height + ").",50,20); 17 g.drawstring("die Breite ist " + breite + ".",50,50); 18 g.drawstring("die Höhe ist " + hoehe + ".",50,70); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dimension.tex) G 40

41 Mit der zugehörigen HTML-Datei: Beispiel: 1 <HTML> 2 <HEAD> 3 <TITLE>Parameterübergabe</TITLE> 4 </HEAD> 5 <BODY> 6 <P> 7 <APPLET code="dimen11.class" width=400 height=80> 8 </APPLET> 9 </P> 10 <P> 11 <APPLET code="dimen11.class" width=400 height=120> 12 </APPLET> 13 </P> 14 </BODY> 15 </HTML> erhält man die auf den folgenden Seiten angezeigte Ausgabe. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dimension.tex) G 41

42 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dimension.tex) G 42

43 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dimension.tex) G 43

44 3.2 Parameterübergabe Die Übergabe von Parametern an Applets erfolgt in zwei Teilen durch eine Zeichenkette mit einem frei wählbaren Namen und dem Wert des Parameters. Syntax: wert = getparameter ("parameter_name") In der HTML-Datei muss der gleiche Namen verwendet werden. Syntax: <PARAM name=parameter_name value= wert > Wird kein Parameterwert in der HTML-Datei definiert, gibt getparameter den Wert null zurück. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/parameter.tex) G 44

45 Beispiel: 1 // Parameterübergabe von der HTML-Datei 2 3 public class Param01 extends java.applet.applet 4 { 5 int opeins, opzwei, summe; 6 7 public void init () { 8 opeins=integer.parseint(getparameter("operandeins")); 9 opzwei=integer.parseint(getparameter("operandzwei")); 10 summe=opeins+opzwei; 11 } public void paint(java.awt.graphics g) 14 { 15 g.drawstring("die Summe von " + opeins + " und " + 16 opzwei + " ist " + summe + ".",80,50); 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/parameter.tex) G 45

46 wird aufgerufen mit 1 <HTML> 2 <HEAD> 3 <TITLE>Parameterübergabe</TITLE> 4 </HEAD> 5 <BODY> 6 <P> 7 <APPLET code="param01.class" width=400 height=80> 8 <PARAM name=operandeins value= 1 > 9 <PARAM name=operandzwei value= 2 > 10 </APPLET> 11 </P> 12 <P> 13 <APPLET code="param01.class" width=400 height=80> 14 <PARAM name=operandeins value= 10 > 15 <PARAM name=operandzwei value= 20 > 16 </APPLET> 17 </P> 18 </BODY> 19 </HTML> c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/parameter.tex) G 46

47 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/parameter.tex) G 47

48 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/parameter.tex) G 48

49 3.3 Einfache Textausgabe Die Methode drawstring Zur Ausgabe einer Zeichenkette steht die Methode drawstring zur Verfügung. Syntax: public void drawstring(string str, int x, int y); Beispiel: 1 public class Helo01 extends java.applet.applet 2 { 3 public void paint (java.awt.graphics g) 4 { 5 g.drawstring("hello, World!", 150, 50); 6 } 7 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 49

50 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 50

51 Beispiel: 1 import JcL.*; 2 import java.awt.*; 3 4 public class Helof01 extends Frame 5 { 6 public static void main(string [] args) { 7 Helof01 frm = new Helof01(); 8 } 9 10 public Helof01() { 11 super("beispiel für paint"); 12 addwindowlistener(new WAdapt()); 13 setsize(300,100); 14 setvisible(true); 15 } public void paint (Graphics g) { 18 g.drawstring("hello, World!", 100, 60); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 51

52 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 52

53 3.3.2 Die Methoden drawbyte und drawchar Mit der Methode drawbyte kann ein Feld vom Datentyp Byte und mit drawchar ein Feld vom Datentyp Charakter ausgegeben werden. Syntax: public void drawbyte(byte [] feld, int offset, int länge, int x, int y) public void drawchar(byte [] feld, int offset, int länge, int x, int y) feld offset länge x y Das Feld, das ausgegeben werden soll. Der Offset, bei dem die Ausgabe starten soll. Die Anzahl der Zeichen, die ausgegeben werden sollen. Die x-position, bei der die Ausgabe beginnt. Die y-position, bei der die Ausgabe beginnt. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 53

54 Beispiel: 1 import java.awt.*; 2 3 public class Helo02 extends java.applet.applet 4 { 5 byte [] b={ A, B, C, D, E, F, G, H, I, J, K, L }; 6 char [] c={ a, b, c, d, e, f, g, h, i, j, k, l }; 7 8 public void paint (Graphics g) 9 { 10 g.drawbytes(b,2,9,150,50); 11 g.drawchars(c,2,9,150,70); 12 } 13 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 54

55 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 55

56 3.4 Schriftname, Schriftstil und Schriftgröße Veränderungen der Schrift d.h. Schriftname, Schriftstil und Schriftgröße geschehen mittels eines Font-Objekts. Syntax: Font name = new Font(String schriftname, int schriftstil, int schriftgröße); Mit der Methode setfont wird die Schrift aktiviert. Syntax: objektname.setfont(name) Schriftname Die Schriftnamen Serif, SansSerif und Monospaced werden in allen Java-Installationen unterstützt. Sie stehen für die systemspezifischen Schriften TimesRoman, Helvetica und Courier. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 56

57 Beispiel: 1 import java.awt.*; 2 3 public class Helo11 extends java.applet.applet { 4 Font fs = new Font("Serif",Font.PLAIN,16); 5 Font fss = new Font("SansSerif",Font.PLAIN,16); 6 Font fm = new Font("Monospaced",Font.PLAIN,16); 7 Font ft = new Font("TimesRoman",Font.PLAIN,16); 8 Font fh = new Font("Helvetica",Font.PLAIN,16); 9 Font fc = new Font("Courier",Font.PLAIN,16); 10 String txt = "Das ist ein Probetext."; public void paint(java.awt.graphics g) { 13 g.setfont(fs); g.drawstring(txt,100,30); 14 g.setfont(fss); g.drawstring(txt,100,60); 15 g.setfont(fm); g.drawstring(txt,100,90); 16 g.setfont(ft); g.drawstring(txt,100,120); 17 g.setfont(fh); g.drawstring(txt,100,150); 18 g.setfont(fc); g.drawstring(txt,100,180); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 57

58 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 58

59 Beispiel: 1 import JcL.*; 2 import java.awt.*; 3 4 public class Helof11 extends Frame 5 { 6 Font fs = new Font("Serif",Font.PLAIN,16); 7 Font fss = new Font("SansSerif",Font.PLAIN,16); 8 Font fm = new Font("Monospaced",Font.PLAIN,16); 9 Font ft = new Font("TimesRoman",Font.PLAIN,16); 10 Font fh = new Font("Helvetica",Font.PLAIN,16); 11 Font fc = new Font("Courier",Font.PLAIN,16); 12 String txt = "Das ist ein Probetext."; public static void main(string [] args) 15 { 16 Helof11 frm = new Helof11(); 17 } public Helof11() 20 { c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 59

60 21 super("beispiel für Font"); 22 addwindowlistener(new WAdapt()); 23 setsize(400,200); 24 setvisible(true); 25 } public void paint (Graphics g) 28 { 29 g.setfont(fs); g.drawstring(txt,100,40); 30 g.setfont(fss); g.drawstring(txt,100,70); 31 g.setfont(fm); g.drawstring(txt,100,100); 32 g.setfont(ft); g.drawstring(txt,100,130); 33 g.setfont(fh); g.drawstring(txt,100,160); 34 g.setfont(fc); g.drawstring(txt,100,190); 35 } 36 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 60

61 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 61

62 3.4.2 Schriftstil Der Schriftstil gibt an, ob eine Schrift in normaler fetter kursiver Darstellung verwendet werden soll. Java stellt hierzu numerische Konstanten zur Verfügung: Name Wert Bedeutung Font.PLAIN 0 normale Darstellung Font.BOLD 1 fette Darstellung Font.ITALIC 2 kursive Darstellung Die Angaben Font.PLAIN und Font.ITALIC können kombiniert werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 62

63 Beispiel: 1 import java.awt.*; 2 3 public class Helo12 extends java.applet.applet 4 { 5 Font n = new Font("TimesRoman",Font.PLAIN,17); 6 Font b = new Font("TimesRoman",Font.BOLD,17); 7 Font k = new Font("TimesRoman",Font.ITALIC,17); 8 String txt = "Das ist ein Probetext."; 9 10 public void paint(graphics g) 11 { 12 g.setfont(n); g.drawstring(txt,100,30); 13 g.setfont(b); g.drawstring(txt,100,60); 14 g.setfont(k); g.drawstring(txt,100,90); 15 } 16 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 63

64 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 64

65 Beispiel: 1 import JcL.*; 2 import java.awt.*; 3 4 public class Helof12 extends Frame 5 { 6 7 Font n = new Font("TimesRoman",Font.PLAIN,17); 8 Font b = new Font("TimesRoman",Font.BOLD,17); 9 Font k = new Font("TimesRoman",Font.ITALIC,17); 10 String txt = "Das ist ein Probetext."; public static void main(string [] args) 13 { 14 Helof12 frm = new Helof12(); 15 } public Helof12() 18 { 19 super("beispiel für Font"); 20 addwindowlistener(new WAdapt()); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 65

66 21 setsize(400,100); 22 setvisible(true); 23 } public void paint (Graphics g) 26 { 27 g.setfont(n); g.drawstring(txt,100,40); 28 g.setfont(b); g.drawstring(txt,100,65); 29 g.setfont(k); g.drawstring(txt,100,90); 30 } 31 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 66

67 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 67

68 3.4.3 Schriftgröße Der dritte Parameter des Font-Konstruktors gibt die Schriftgröße in Punkten an. Beispiel: 1 import java.awt.*; 2 3 public class Helo13 extends java.applet.applet 4 { 5 Font n = new Font("TimesRoman",Font.PLAIN,10); 6 Font b = new Font("TimesRoman",Font.PLAIN,20); 7 Font k = new Font("TimesRoman",Font.PLAIN,30); 8 String txt = "Das ist ein Probetext."; 9 10 public void paint(graphics g) 11 { 12 g.setfont(n); g.drawstring(txt,50,20); 13 g.setfont(b); g.drawstring(txt,50,50); 14 g.setfont(k); g.drawstring(txt,50,90); 15 } 16 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 68

69 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 69

70 Beispiel: 1 import JcL.*; 2 import java.awt.*; 3 4 public class Helof13 extends Frame 5 { 6 7 Font n = new Font("TimesRoman",Font.PLAIN,10); 8 Font b = new Font("TimesRoman",Font.PLAIN,20); 9 Font k = new Font("TimesRoman",Font.PLAIN,30); 10 String txt = "Das ist ein Probetext."; public static void main(string [] args) 13 { 14 Helof13 frm = new Helof13(); 15 } public Helof13() 18 { 19 super("beispiel für Font"); 20 addwindowlistener(new WAdapt()); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 70

71 21 setsize(400,100); 22 setvisible(true); 23 } public void paint (Graphics g) 26 { 27 g.setfont(n); g.drawstring(txt,50,30); 28 g.setfont(b); g.drawstring(txt,50,55); 29 g.setfont(k); g.drawstring(txt,50,90); 30 } 31 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 71

72 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 72

73 Beispiel Verfügbare Schriften: 1 import java.awt.*; 2 3 public class Helo20 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 String [] fname = 8 (GraphicsEnvironment.getLocalGraphicsEnvironment()) 9.getAvailableFontFamilyNames(); 10 lab:for(int i=0; i<fname.length; i+=2) 11 for(int j=0; j<=1; j++) 12 { 13 if(i+j==fname.length) break lab; 14 g.setfont(new Font(fname[i+j],Font.PLAIN,10)); 15 g.drawstring(fname[i+j],200*j+10,7*i+20); 16 } 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 73

74 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 74

75 3.4.4 Weitere Beispiele Beispiel: 1 import java.awt.*; 2 import JcL.*; 3 4 public class Alphf01 extends Frame 5 { 6 public static void main(string [] args) 7 { 8 Alphf01 frm = new Alphf01(); 9 } public Alphf01() 12 { 13 super("alphabet"); 14 addwindowlistener(new WAdapt()); 15 setsize(350,230); 16 setvisible(true); 17 } 18 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 75

76 19 public void paint (Graphics g) 20 { 21 int x,y; for(y=0;y<13;y++) 24 for(x=0;x<2;x++) 25 { 26 g.drawstring(string.valueof((char)(2*y+x+ A )), 27 x* ,y*15+40); 28 g.drawstring(string.valueof((char)(2*y+x+ a )), 29 x* ,y*15+40); 30 } 31 } 32 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 76

77 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 77

78 Beispiel: 1 import JcL.*; 2 import java.awt.*; 3 4 public class Asciif01 extends Frame 5 { 6 public static void main(string [] args) 7 { 8 Asciif01 frm = new Asciif01(); 9 } public Asciif01() 13 { 14 super("ascii-zeichensatz"); 15 addwindowlistener(new WAdapt()); 16 setsize(350,300); 17 setvisible(true); 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 78

79 21 public void paint (Graphics g) 22 { 23 int x,y; for(y=0;y<16;y++) 26 for(x=0;x<16;x++) 27 g.drawstring(string.valueof((char)(16*y+x)), 28 x*15+60,y*15+50); 29 } 30 } Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 79

80 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/textausg.tex) G 80

81 3.5 Einfache graphische Figuren In der Klasse Graphics sind eine Anzahl von Funktionen vorhanden, um einfache Zeichenoperationen durchzuführen. Hierzu zählen Linien, Polygone, Rechtecke sowie Ellipsen und Kreisabschnitte. Java unterscheidet zwischen Methoden, die ein Objekt zeichnen und Methoden, die ein Objekt ausfüllen. Im folgenden wird immer zuerst die Syntax eines Befehls erläutert. Danach folgt die Ausgabe eines Beispiels. Ein Teil der Java-Programme wird dann mit Applet und Frame angezeigt. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 81

82 3.5.1 Linien Zum Zeichnen von Linien steht die Methode drawline zur Verfügung Syntax: drawline(int x1, int y1, int x2, int y2); drawline zeichnet eine Linie vom Punkt mit den Koordinaten (x1,y1) zum Punkt mit den Koordinaten (x2,y2). c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 82

83 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 83

84 Beispiel (Applet): 1 import java.awt.*; 2 3 public class Figu11 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 g.drawline(50,20,150,120); g.drawline(150,20,50,120); for(int x=50;x<=150;x+=10) g.drawline(x,160,x,260); 11 for(int y=20;y<=120;y+=5) g.drawline(200,y,350,y); for(int x=200;x<=350;x+=25) g.drawline(x,160,x,260); 14 for(int y=160;y<=260;y+=25) g.drawline(200,y,350,y); 15 } 16 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 84

85 Beispiel (Frame): 1 import java.awt.*; 2 import JcL.*; public class Figuf11 extends Frame 6 { 7 public static void main(string [] args) 8 { 9 Figuf11 frm = new Figuf11(); 10 } public Figuf11() 14 { 15 addwindowlistener(new WAdapt()); 16 setsize(400,280); 17 setvisible(true); 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 85

86 21 public void paint (Graphics g) 22 { 23 g.drawline(50,40,150,140); g.drawline(150,40,50,140); for(int x=50;x<=150;x+=10) g.drawline(x,160,x,260); for(int y=40;y<=140;y+=5) g.drawline(200,y,350,y); for(int x=200;x<=350;x+=25) g.drawline(x,160,x,260); 30 for(int y=160;y<=260;y+=25) g.drawline(200,y,350,y); 31 } 32 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 86

87 3.5.2 Rechtecke und Ovale Rechtecke Zum Zeichnen von Rechtecken stehen folgende Methoden zur Verfügung: drawrect fillrect clearrect zum Zeichnen eines Rechtecks zum Füllen eines Rechtecks zum Löschen eines Rechtecks Syntax: drawrect(int x, int y, int breite, int höhe); fillrect(int x, int y, int breite, int höhe); clearrect(int x, int y, int breite, int höhe); wobei die Koordinaten (x,y) die linke obere Ecke beschreiben und die Abmessung durch die Parameter breite und höhe festgelegt werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 87

88 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 88

89 Beispiel (Applet): 1 import java.awt.*; 2 3 public class Figu21 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 g.drawrect(50,20,100,100); g.fillrect(50,160,100,100); 11 g.drawrect(200,20,150,100); g.drawrect(210,30,130,80); 12 g.fillrect(220,40,110,60); g.clearrect(240,60,70,20); g.drawrect(245,180,60,60); g.fillrect(200,190,150,40); 15 g.fillrect(255,160,40,100); g.clearrect(265,200,20,20); 16 } 17 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 89

90 Beispiel (Frame): 1 import java.awt.*; 2 import JcL.*; 3 4 public class Figuf21 extends Frame 5 { 6 public static void main(string [] args) 7 { 8 Figuf21 frm = new Figuf21(); 9 } public Figuf21() 12 { 13 addwindowlistener(new WAdapt()); 14 setsize(400,280); 15 setvisible(true); 16 } public void paint (Graphics g) 19 { 20 g.drawrect(50,40,100,100); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 90

91 21 22 g.fillrect(50,160,100,100); g.drawrect(200,40,150,100); g.drawrect(210,50,130,80); 25 g.fillrect(220,60,110,60); g.clearrect(240,80,70,20); g.drawrect(245,180,60,60); g.fillrect(200,190,150,40); 28 g.fillrect(255,160,40,100); g.clearrect(265,200,20,20); 29 } 30 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 91

92 Rechtecke mit abgerundeten Ecken Die Methoden drawroundrect und fillroundrect arbeiten analog der Methoden drawrect und fillrect haben jedoch zwei Parameter mehr: die Breite eb und die Höhe eh der abgerundeten Ecken. Je größer diese Werte sind, desto runder wird das Rechteck. Syntax: drawroundrect(int x, int y, int b, int h, int eb, int eh); fillroundrect(int x, int y, int b, int h, int eb, int eh); Ovale und Kreise Die Methoden drawoval und filloval werden verwendet, Ovale zu zeichnen. Die Parameter x, y, breite und höhe beschreiben ein Rechteck, in welches das Oval eingepasst wird. Ist das Rechteck ein Quadrat, dann wird das Oval zum Kreis. Syntax: drawoval(int x, int y, int breite, int höhe); filloval(int x, int y, int breite, int höhe); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 92

93 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 93

94 Beispiel (Applet): 1 import java.awt.*; 2 3 public class Figu22 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 g.drawroundrect(50,20,100,100,40,40); g.fillroundrect(200,20,150,100,100,50); 11 g.drawoval(50,160,100,100); g.filloval(200,160,150,100); 14 } 15 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 94

95 Beispiel (Frame): 1 import java.awt.*; 2 import JcL.*; 3 4 public class Figuf22 extends Frame 5 { 6 public static void main(string [] args) 7 { 8 Figuf22 frm = new Figuf22(); 9 } public Figuf22() 12 { 13 addwindowlistener(new WAdapt()); 14 setsize(400,280); 15 setvisible(true); 16 } public void paint (Graphics g) 19 { 20 g.drawroundrect(50,40,100,100,40,40); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 95

96 21 22 g.fillroundrect(200,40,150,100,100,50); g.drawoval(50,160,100,100); g.filloval(200,160,150,100); 27 } 28 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 96

97 3.5.4 Kreisbögen Die Methoden drawarc und fillarc erzeugen Kreisbögen, d.h. Teile eines Ovals. Beide Methoden erwarten sechs Argumente, die ersten vier entsprechen denen der Methode drawoval. Die beiden anderen dienen der Winkelangabe, die der Kreis-(Oval-)Ausschnitt einnimmt. Syntax: drawarc(int x,int y,int b,int h,int bwinkel,int lwinkel); fillarc(int x,int y,int b,int h,int bwinkel,int lwinkel); Der Parameter bwinkel gibt an, an welcher Stelle der Bogen beginnt und der Parameter lwinkel gibt die Länge des Bogens an. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 97

98 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 98

99 Beispiel (Applet): 1 import java.awt.*; 2 3 public class Figu31 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 g.drawarc(50,20,100,100,30,270); g.fillarc(200,20,150,100,30,300); 11 for(int w=0;w<=360;w+=10) 12 g.drawarc(50,160,100,100,w,5); for(int w=0;w<=360;w+=15) 15 g.fillarc(200,160,150,100,w,7); 16 } 17 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 99

100 3.5.5 Polygone Die Methode drawpolygon und fillpolygon dienen zum Zeichnen bzw. Ausfüllen von Polygonen. Die Koordinaten werden hierbei entweder als zwei Felder oder als ein Polygon- Objekt angegeben. drawpolygon(int [] xkoord,int [] ykoord, int anzpunkte); drawpolygon(polygon p); fillpolygon(int [] xkoord,int [] ykoord, int anzpunkte); fillpolygon(polygon p); Hierbei sind xkoord und ykoord Felder, die die Koordinaten der Punkte enthalten und der Parameter anzpunkte gibt an, um wieviele Punkte es sich handelt. Alternativ ist p ein Polygon-Objekt. Ein Polygon-Objekt kann erzeugt werden, indem man mit der Anweisung Polygon p = new Polygon(); ein neues Polygon erzeugt, zu dem danach mit der Anweisung p.addpoint(x,y); Punkte mit den jeweiligen x- und y-koordinaten hinzugefügt werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 100

101 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 101

102 Beispiel (Applet): 1 import java.awt.*; 2 3 public class Figu41 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 int [] x={50,100,150,200,250,300,350,350,50}; 8 int [] y={20,40,20,40,20,40,20,120,120}; 9 10 g.drawpolygon(x,y,9); Polygon p = new Polygon(); 13 p.addpoint(50,160); p.addpoint(350,160); 14 p.addpoint(350,260); p.addpoint(300,220); 15 p.addpoint(250,260); p.addpoint(200,220); 16 p.addpoint(150,260); p.addpoint(100,220); 17 p.addpoint(50,260); 18 g.fillpolygon(p); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 102

103 3.5.6 Verbindung von Punkten, Kopieren von Bereichen drawpolyline Die Methode drawpolyline dient zum Verbinden von Punkten durch Linien. Die Koordinaten der Punkte werden hierbei als zwei Felder angegeben. Syntax: drawpolyline(int [] xkoord,int [] ykoord, int anzpunkte); Hierbei sind xkoord und ykoord Felder, die die Koordinaten der Punkte enthalten und der Parameter anzpunkte gibt an, um wieviele Punkte es sich handelt. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 103

104 copyarea Mit der Methode copyarea können rechteckige Bereiche eines Applet an eine andere Position kopiert werden. Syntax: copyarea(int x, int y, int b, int h, int dx, int dy); Es wird ein Rechteck, dessen linke obere Ecke durch die Koordinaten (x,y) gegeben ist, mit der Breite b und der Höhe h um die Werte dx und dy verschoben. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 104

105 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 105

106 Beispiel (Applet): 1 import java.awt.*; 2 3 public class Figu51 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 int [] x={50,100,100,50,50,100,75,50,100}; 8 int [] y={100,100,50,50,100,50,25,50,100}; 9 10 g.drawpolyline(x,y,9); g.copyarea(50,25,51,76,100,0); 13 g.copyarea(50,25,51,76,150,0); 14 g.copyarea(50,25,51,76,200,0); 15 g.copyarea(50,25,51,76,250,0); g.copyarea(150,25,201,76,0,85); 18 g.copyarea(150,25,201,76,0,170); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 106

107 3.5.7 Weitere Beispiele Beispiel Schriftvermessung mit Applet: 1 import java.applet.*; 2 import java.awt.*; 3 4 public class FontMetr extends Applet 5 { 6 public void paint(graphics g) 7 { 8 int x=60,y=150; 9 String buchstab="applet"; Font gross= new Font("Serif",Font.PLAIN,72); g.setfont(gross); 14 g.drawstring(buchstab,x,y); int h,t,b; FontMetrics fntmtr = getfontmetrics(gross); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 107

108 19 20 b=fntmtr.stringwidth(buchstab); 21 h=fntmtr.getascent(); 22 t=fntmtr.getdescent(); int xb=x+b,yh=y-h+t,yt=y+t, 25 xa=x-20,xe=xb+20,ya=yh-20,ye=yt+20; g.drawline(xa,yh,xe,yh); 28 g.drawline(xa,y,xe,y); 29 g.drawline(xa,yt,xe,yt); 30 g.drawline(x,ya,x,ye); 31 g.drawline(xb,ya,xb,ye); 32 } 33 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 108

109 Beispiel Schriftvermessung mit Frame: 1 import JcL.*; 2 import java.awt.*; 3 4 public class FontMetrf extends Frame 5 { 6 public static void main(string [] args) 7 { 8 FontMetrf frm = new FontMetrf(); 9 } public FontMetrf() 12 { 13 addwindowlistener(new WAdapt()); 14 setsize(400,250); 15 setvisible(true); 16 } public void paint (Graphics g) 19 { 20 int x=60,y=150,h,t,b; c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 109

110 21 String buchstab="applet"; 22 Font gross= new Font("Serif",Font.PLAIN,72); 23 g.setfont(gross); 24 g.drawstring(buchstab,x,y); FontMetrics fntmtr = getfontmetrics(gross); b=fntmtr.stringwidth(buchstab); 29 h=fntmtr.getascent(); 30 t=fntmtr.getdescent(); int xb=x+b,yh=y-h+t,yt=y+t, 33 xa=x-20,xe=xb+20,ya=yh-20,ye=yt+20; g.drawline(xa,yh,xe,yh); 36 g.drawline(xa,y,xe,y); 37 g.drawline(xa,yt,xe,yt); 38 g.drawline(x,ya,x,ye); 39 g.drawline(xb,ya,xb,ye); 40 } 41 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 110

111 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 111

112 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/grafausg.tex) G 112

113 Kapitel 4 Verwendung von Farben Veränderungen der Farbe geschieht mit der Klasse Color. Java verwendet ein abstraktes Farbmodell mit 24 Bit Farbtiefe, um Farben als Gemisch aus den Grundtönen Rot, Grün und Blau darzustellen (RGB-Modell).Das abstrakte Farbmodell von Java wird auf das Farbmodell der Plattform abgebildet, auf der das Applet läuft. Jede Komponente wird als ganze Zahl vom Datentyp int angegeben und kann einen Wert zwischen 0 und 255 annehmen. Syntax: Color name = new Color(int rotwert, int grünwert, int blauwert); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 113

114 Alternativ kann jede Komponente als Gleitpunktzahl vom Datentyp float angegeben werden und es sind Werte zwischen 0.0 und 1.0 erlaubt. Color name = new Color(float rotwert, float grünwert, float blauwert); Farben werden mit der Methode setcolor festgelegt, die in der Klasse Graphics enthalten ist. Sie findet daher meist in der Methode paint Anwendung. Syntax: setcolor(color c) Um die Farben im Vorder- und Hintergrundbereich festzulegen, sind in Java die Methoden setforeground und setbackground vorhanden, die sich in der Klasse Component befinden. Syntax: setforeground(color c) setbackground(color c) c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 114

115 Zur Vereinfachung gibt es in der Klasse Color eine konstante Anzahl von Farben, die mit ihrem Namen vorgegeben sind: Objekt-Name Farbe RGB-Wert Color.white Weiß 255, 255, 255 Color.black Schwarz 0, 0, 0 Color.gray Grau 128, 128, 128 Color.lightGray Hellgrau 192, 192, 192 Color.darkGray Dunkelgrau 64, 64, 64 Color.red Rot 255, 0, 0 Color.green Grün 0, 255, 0 Color.blue Blau 0, 0, 255 Color.yellow Gelb 255, 255, 0 Color.magenta Magenta 255, 0, 255 Color.cyan Cyan 0, 255, 255 Color.pink Rosa 255, 175, 175 Color.orange Orange 255, 200, 0 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 115

116 Beispiel 1: 1 import java.awt.*; 2 3 public class Farb02 extends java.applet.applet 4 { 5 public void paint(graphics g) 6 { 7 g.fillrect(30,20,100,50); 8 g.setcolor(color.red); g.fillrect(150,20,100,50); 9 g.setcolor(color.green); g.fillrect(270,20,100,50); 10 g.setcolor(color.blue); g.fillrect(30,100,100,50); 11 g.setcolor(color.cyan); g.fillrect(150,100,100,50); 12 g.setcolor(color.magenta); g.fillrect(270,100,100,50); 13 g.setcolor(color.orange); g.fillrect(30,180,100,50); 14 g.setcolor(color.pink); g.fillrect(150,180,100,50); 15 g.setcolor(color.yellow); g.fillrect(270,180,100,50); 16 } 17 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 116

117 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 117

118 Beispiel 2: 1 import java.awt.*; 2 public class Farb01 extends java.applet.applet 3 { 4 Dimension dim; 5 6 public void init() { 7 dim=getsize(); 8 } 9 10 public void paint(graphics g) { 11 int i,j; 12 for(i=25;i<dim.height-30;i+=30) 13 for(j=25;j<dim.width-30;j+=30) { 14 g.setcolor(new Color((float)Math.random(), 15 (float)math.random(),(float)math.random())); 16 g.fillrect(j,i,25,25); 17 g.setcolor(color.black); g.drawrect(j,i,25,25); 18 } 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 118

119 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 119

120 Beispiel 3: 1 import java.awt.*; 2 public class Farb03 extends java.applet.applet 3 { 4 public void paint(graphics g) { 5 g.drawrect(50,20,300,200); 6 g.setcolor(color.green); 7 for(int i=30;i<=210;i+=10) g.drawline(50,i,350,i); 8 for(int i=60;i<=340;i+=10) g.drawline(i,20,i,220); 9 10 g.setcolor(color.red); 11 Polygon pg1 = new Polygon(); 12 pg1.addpoint(60,30); pg1.addpoint(340,70); 13 pg1.addpoint(320,90); pg1.addpoint(300,110); 14 pg1.addpoint(160,80); pg1.addpoint(140,130); 15 pg1.addpoint(100,120); g.drawpolygon(pg1); g.drawarc(80,140,100,60,0,360); 18 g.drawarc(220,140,100,60,30,270); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 120

121 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 121

122 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/farben.tex) G 122

123 Kapitel 5 Bilder und Sound Bilder können in Java nur in Form von Bitmaps eingebunden werden, die von einem externen Speichermedium oder aus dem Netz geladen werden. Die Ausgabe von Sound ist denkbar einfach. Mit dem JDK 1.3 wurden die Fähigkeiten erneut erweitert. Mit der nun enthaltenen Sound-Engine kann Musik nicht nur wiedergegeben, sondern auch aufgenommen und bearbeitet werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 123

124 5.1 Einbinden von Bildern Zur Verwendung von Bildern gibt es in Java die Klasse java.awt.image. Zum Laden und Anzeigen werden Methoden der Klassen Graphics und Applet verwendet. Um ein Bildes anzuzeigen, muss dieses über das WWW in ein Java-Programm geladen werden. Bilder werden getrennt von Java-Klassendateien gespeichert. Für Java werden die Dateiformate JPEG (Suffix.jpg) und GIF (Suffix.gif) unterstützt. Um das Bild zu laden, muss anstelle des Dateinamens eine URL angegeben werden. Hierzu wird die Klasse java.net.url verwendet. Ein Bild kann auf zwei Arten geladen werden: 1. mit der Methode getimage, die als Argument ein Objekt vom Datentyp URL erwartet: Syntax: Image getimage(url url) c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 124

125 2. mit der Methode getimage, die zwei Argument erwartet und zwar ein Objekt vom Datentyp URL, das die Basis bezeichnet und einer Zeichenkette, die den Namen des Bildes angibt. Syntax: Image getimage(url url,string name) Da es oft unflexibel ist, eine URL fest im Programm festzulegen, existieren zwei Methoden, die die Verwendung einer URL vermeiden: die Methode getdocumentbase(), die ein URL-Objekt erzeugt, das das Verzeichnis repräsentiert, in dem die Webseite enthalten ist, die das Applet aufruft. die Methode getcodebase(), die ein URL-Objekt erzeugt, das das Verzeichnis repräsentiert, in dem die Datei zu finden ist, in der die Hauptklassen des Applets enthalten sind. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 125

126 Nach dem Laden eines Bildes kann es durch die Methode drawimage, die zur Klasse Graphics gehört, ausgegeben werden. Syntax: drawimage(image bild,int x,int y,imageobserver observer) Folgende Parameter werden erwartet: ein Objekt bild vom Datentyp Image, die Koordinaten x und y vom Datentyp int und als ImageObserver das Schlüsselwort this. Beispiel: 1 import java.awt.*; 2 import java.net.*; 3 4 public class Bild02 extends java.applet.applet 5 { 6 Image bild; 7 URL url; 8 Dimension dim; 9 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 126

127 10 public void init() 11 { 12 try 13 { 14 url=new URL(getCodeBase(), "penguin.gif"); 15 } 16 catch(malformedurlexception e) 17 { 18 System.exit(2); 19 } 20 bild=getimage(url); 21 } public void paint(graphics g) 24 { 25 g.drawimage(bild,150,70,this); 26 } 27 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 127

128 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 128

129 Alternativ kann bei der Methode drawimage die Größe des Bildes angegeben werden. Syntax: drawimage(image bild,int x,int y, int breite,int hoehe,imageobserver observer) Folgende Parameter werden erwartet: ein Objekt bild vom Datentyp Image, die Koordinaten x und y vom Datentyp int, die Breite und Höhe des Bildes, d.h. breite und hoehe von Datentyp int und als ImageObserver das Schlüsselwort this. Beispiel: 1 import java.awt.*; 2 import java.net.*; 3 4 public class Bild01 extends java.applet.applet 5 { 6 Image bild; 7 URL url; 8 Dimension dim; 9 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 129

130 10 public void init() 11 { 12 try 13 { 14 url=new URL(getCodeBase(), "world.gif"); 15 } 16 catch(malformedurlexception e) 17 { 18 System.exit(2); 19 } 20 bild=getimage(url); 21 } public void paint(graphics g) 24 { 25 int iw=bild.getwidth(this); 26 int ih=bild.getheight(this); 27 g.drawimage(bild,15,20,iw,ih,this); 28 g.drawimage(bild,15,110,iw*2,ih*2,this); 29 g.drawimage(bild,170,20,iw*3,ih*3,this); 30 } 31 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 130

131 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 131

132 Beispiel: 1 import java.awt.*; 2 import java.net.*; 3 4 public class Bild03 extends java.applet.applet 5 { 6 Image bild; 7 8 public void init() { 9 bild=getimage(getdocumentbase(),"world.gif"); 10 } public void paint(graphics g) { 13 int iw=bild.getwidth(this); 14 int ih=bild.getheight(this); 15 g.drawimage(bild,15,20,iw,ih,this); 16 g.drawimage(bild,15,110,iw*2,ih*2,this); 17 g.drawimage(bild,170,20,iw*3,ih*3,this); 18 } 19 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 132

133 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/bilder.tex) G 133

134 5.2 Ausgabe von Sound Die Ausgabe von Sound ist sehr einfach. Es stehen zwei unterschiedliche Varianten zur Verfügung: 1. Die Klasse Applet enthält die Methode play. 2. Es wird ein Objekt der Klasse AudioClip erzeugt Die Methode play der Klasse Applet Durch die Methode play wird die Sound-Datei geladen und abgespielt. Syntax: void play(url url); void play(url url, String name); Hier kann entweder die URL einer Sound-Datei bzw. eine Kombination von Basis-URL und Dateinamen angegeben werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/sound.tex) G 134

135 Beispiel: 1 import java.applet.*; 2 import java.awt.*; 3 4 public class Sound01 extends Applet 5 { 6 public void init() 7 { 8 play(getdocumentbase(),"spacemusic.au"); 9 } 10 } Der Nachteil dieser Methode ist, dass die Sound-Datei bei jeder Aufruf neu geladen werden muss. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/sound.tex) G 135

136 5.2.2 Erzeugung eines Objektes der Klasse AudioClip Um die Sound-Datei abzuspielen, wird die Datei mit der Methode getaudioclip in ein Objekt der Klasse AudioClip geladen. Mittels der Methoden play, loop und stop die ebenfalls zur Klasse AudioClip gehören, wird die Wiedergabe gesteuert. Beispiel: 1 import java.applet.*; 2 import java.awt.*; 3 import java.net.*; 4 5 public class Sound02 extends Applet 6 { 7 URL url; 8 AudioClip ac; 9 10 public void init() 11 { 12 try c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/sound.tex) G 136

137 13 { 14 url=new URL(getCodeBase(), "spacemusic.au"); 15 ac=getaudioclip(url); 16 } 17 catch(malformedurlexception e) 18 { 19 System.exit(4); 20 } 21 } public void start() 24 { 25 ac.loop(); 26 } public void stop() 29 { 30 ac.stop(); 31 } 32 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/sound.tex) G 137

138 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/sound.tex) G 138

139 Kapitel 6 Dialogelemente Zu jedem Diagonalelement gehört in Java eine eigene Klasse, die das Verhalten und die Eigenschaften beschreibt.um in ein Applet ein Diagonalelement hinzuzufügen, wird ein Objekt der gewünschten Klasse erzeugt und mit der Methode add hinzugefügt. Syntax: add(diagonalelement-objekt) Alle Diagonalelemente sind aus der Klasse Component abgeleitet und daher können alle dort verhandenen Methoden aufgerufen werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 139

140 6.1 Anlegen einer Menü-Leiste Zum Anlegen einer Menü-Leiste steht die Klassen MenuBar und Menu zur Verfügung Konstruktoren Die Klasse MenuBar stellt einen Konstruktor zur Verfügung: Syntax: MenuBar() Die Klasse Menue stellt zwei Konstruktoren zur Verfügung: Syntax: Menu() Menu(String text) Menu erzeugt ein Menü ohne Text und Menu(String text) erzeugt ein Menü mit vorgegebenem Text text. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 140

141 6.1.2 Methoden Die Klasse MenuBar stellt folgende Methoden zur Verfügung: Menu add(menu m) fügt das angegebene Menü m zur Menü-Leiste hinzu. Die Klasse Menu stellt folgende Methoden zur Verfügung: void add(string label) fügt ein Element mit Namen label als Menüpunkt zum Menü hinzu. void addseparator() fügt eine Trennlinie an der aktuellen Position ein. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 141

142 Beispiel: 1 import JcL.*; 2 import java.awt.*; 3 4 public class Menue01 extends Frame 5 { 6 // Konstruktor 7 public Menue01() 8 { 9 super("frame mit Menue"); 10 MenuBar mb = new MenuBar(); 11 setmenubar(mb); 12 // Erste Menuespalte 13 Menu datei = new Menu("Datei"); 14 datei.add("oeffnen"); 15 datei.add("schliessen"); 16 datei.addseparator(); 17 datei.add("beenden"); 18 // Zweite Menuespalte 19 Menu extra = new Menu("Extra"); 20 extra.add("info"); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 142

143 21 extra.add("version"); 22 // Menues hinzufuegen 23 mb.add(datei); 24 mb.add(extra); 25 } public static void main(string[] args) 28 { 29 // Instanz fuer Frame erzeugen 30 Menue01 f = new Menue01(); 31 f.setsize(400,200); 32 f.setvisible(true); 33 f.addwindowlistener(new WAdapt()); 34 } 35 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 143

144 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 144

145 6.2 Textmarken Textmarken werden verwendet, um den Zweck anderer Komponenten zu beschreiben. Ihre Verwendung ist der Methode drawstring vorzuziehen. Ihre Position wird durch das Layout gesetzt, dagegen erscheinen mit drawstring erzeugte Texte stets an einer festen Position. Es stehen folgende Konstruktoren zur Verfügung: Label() erzeugt eine Textmarke, in der der Text linksbündig angeordnet wird. Label(String text) erzeugt eine Textmarke mit dem Text text, der als Parameter übergeben wurde. Label(String text, int position) erzeugt eine Textmarke mit dem Text text, der zweite Parameter gibt an, wie der Text positioniert werden soll. Hierzu stehen für position folgende Konstanten zur Verfügung: Label.LEFT Label.CENTER Label.RIGHT c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 145

146 Beispiel: 1 import java.awt.*; 2 3 public class Lab001 extends java.applet.applet { 4 Label la1 = new Label("Das ist ein Text für Label 1."); 5 Label la2 = new Label("Das ist ein Text für Label 2."); 6 Label la3 = new Label("Das ist ein Text für Label 3."); 7 Label la4 = new Label("Das ist ein Text für Label 4."); 8 Label la5 = new Label("Das ist ein Text für Label 5."); 9 Label la6 = new Label("Das ist ein Text für Label 6."); public void init() { 12 add(la1); 13 add(la2); 14 add(la3); 15 add(la4); 16 add(la5); 17 add(la6); 18 } 19 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 146

147 Nachdem eine Textmarke erzeugt wurde, kann seine Farbe durch die Methoden setforeground(color farbe) setbackground(color farbe) geändert werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 147

148 Beispiel: 1 import java.awt.*; 2 3 public class Lab002 extends java.applet.applet { 4 Label la1 = new Label("Das ist ein Text für Label 1."); 5 Label la2 = new Label("Das ist ein Text für Label 2."); 6 Label la3 = new Label("Das ist ein Text für Label 3."); 7 Label la4 = new Label("Das ist ein Text für Label 4."); 8 9 public void init() { 10 la1.setforeground(color.green); 11 add(la1); 12 la2.setforeground(color.red); 13 add(la2); 14 la3.setbackground(color.white); 15 add(la3); 16 la4.setforeground(color.yellow); 17 la4.setbackground(color.blue); 18 add(la4); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 148

149 Der Text einer Textmarke kann mit der Methode settext(string text) verändert werden. Dies ist wichtig, wenn der Text dynamisch geändert werden soll. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 149

150 6.3 Schalttasten Schalttasten, die mit der Maus angeklickt werden können, werden durch die Klasse Button erzeugt. Es sind folgende Konstruktoren verfügbar: Button() erzeugt eine Schalttaste ohne Text. Button(String text) erzeugt eine Schalttaste mit dem Text text. Der Text einer Schalttaste kann mit der Methode setlabel(string text) verändert werden. Dies ist wichtig, wenn der Text dynamisch geändert werden soll. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 150

151 Beispiel: 1 import java.awt.*; 2 3 public class Butt01 extends java.applet.applet 4 { 5 public void init() { 6 Button bu1 = new Button("Das ist Taste1"); 7 Button bu2 = new Button("Das ist Taste2"); 8 Button bu3 = new Button("Das ist Taste3"); 9 Button bu4 = new Button("Das ist Taste4"); 10 Button bu5 = new Button("Das ist Taste5"); 11 Button bu6 = new Button("Das ist Taste6"); 12 add(bu1); 13 add(bu2); 14 add(bu3); 15 add(bu4); 16 add(bu5); 17 add(bu6); 18 } 19 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 151

152 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 152

153 6.4 Check- und Radioboxen Check- und Radioboxen werden verwendet, um Optionen in einem Programm auszuwählen. Um sie zu generieren wird die Klasse Checkbox verwendet Checkboxen Bei Checkboxen ist die Auswahl nicht exclusiv, sondern es können auch mehrere Optionen ausgewählt werden. Es sind folgende Konstruktoren vorhanden: Checkbox() erzeugt eine Checkbox ohne Text. Checkbox(String text) erzeugt eine Checkbox mit dem Text text. Der Anfangszustand ist immer eine nichtangewählte Checkbox. Mit der Methode setstate(boolean wert) kann dies geändert werden. Wird der Wert wert auf true gesetzt, wird die Checkbox ausgewählt. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 153

154 Beispiel: 1 import java.awt.*; 2 3 public class Check01 extends java.applet.applet 4 { 5 public void init() { 6 Checkbox ck1 = new Checkbox("Das ist Knopf1"); 7 Checkbox ck2 = new Checkbox("Das ist Knopf2"); 8 Checkbox ck3 = new Checkbox("Das ist Knopf3"); 9 Checkbox ck4 = new Checkbox("Das ist Knopf4"); 10 Checkbox ck5 = new Checkbox("Das ist Knopf5"); 11 Checkbox ck6 = new Checkbox("Das ist Knopf6"); 12 add(ck1); 13 add(ck2); 14 add(ck3); 15 add(ck4); 16 add(ck5); 17 add(ck6); 18 } 19 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 154

155 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 155

156 6.4.2 Radioboxen Eine Radiobox ist eine spezielle Art von Checkbox. Bei ihnen kann immer nur eine Option ausgewählt werden. Hierzu wird ein CheckboxGroup-Objekt angelegt und die Radiobuttons mit dem folgenden Kommando hinzugefügt: Syntax: Ckeckbox(String, boolean, Checkboxgroup} Hierdurch wird eine Checkbox mit dem durch das boolean-argument angebenen Zustand erzeugt, die zur CheckboxGroup gehört. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 156

157 Beispiel: 1 import java.awt.*; 2 3 public class Radio01 extends java.applet.applet 4 { 5 public void init() { 6 CheckboxGroup lev1 = new CheckboxGroup(); 7 CheckboxGroup lev2 = new CheckboxGroup(); 8 Checkbox ck1 = new Checkbox("Das ist Knopf1",true,lev1); 9 Checkbox ck2 = new Checkbox("Das ist Knopf2",false,lev1); 10 Checkbox ck3 = new Checkbox("Das ist Knopf3",true,lev2); 11 Checkbox ck4 = new Checkbox("Das ist Knopf4",false,lev2); add(ck1); 14 add(ck2); 15 add(ck3); 16 add(ck4); 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 157

158 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 158

159 6.5 Auswahllisten Mittels Auswahllisten kann ein Element eines aufklappbaren Menüs selektiert werden. Java stellt hierzu die Klasse Choice zur Verfügung. Eine Auswahlliste wird in zwei Stufen aufgebaut: Zuerst wird ein Choice-Objekt erzeugt, anschließend werden die Menüeinträge hinzugefügt Konstruktor Syntax: Choice() erzeugt eine leere Auswahlliste Methoden void add(string item) fügt einen Eintrag zur Auswahlliste hinzu. String getitem(int index) gibt den Eintrag an der angegebenen Stelle der Auswahlliste zurück. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 159

160 int getitemcount() gibt die Anzahl der Einträge in der Auswahlliste zurück. Beispiel: 1 import java.awt.*; 2 import JcL.*; 3 4 public class Choice01 extends java.applet.applet 5 { 6 Choice aw1 = new Choice(); 7 Choice aw2 = new Choice(); 8 9 public void init() 10 { 11 aw1.add("möglichkeit 1-1"); 12 aw1.add("möglichkeit 1-2"); 13 aw1.add("möglichkeit 1-3"); 14 aw1.add("möglichkeit 1-4"); 15 add(aw1); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 160

161 16 aw2.add("möglichkeit 2-1"); 17 aw2.add("möglichkeit 2-2"); 18 aw2.add("möglichkeit 2-3"); 19 aw2.add("möglichkeit 2-4"); 20 add(aw2); 21 } public void paint(graphics g) 24 { 25 g.drawstring("text(1,1)= " + aw1.getitem(0),40,80); 26 g.drawstring("text(2,2)= " + aw2.getitem(1),40,100); 27 g.drawstring("anzahl Einträge= " + 28 aw1.getitemcount(),40,140); 29 } 30 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 161

162 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 162

163 6.6 Listen Unter einer Liste versteht man die listenartige Darstellung von Werten, von denen man einen oder mehrere auswählen kann. Im Gegensatz zu Objekten der Klasse Choice ist eine Liste ständig sichtbar Konstruktor Syntax: List() erzeugt eine leere Liste. List(int anzahl) erzeugt eine leere Liste mit anzahl sichtbaren Zeilen. List(int anzahl, boolean multiplemode) erzeugt eine leere Liste mit anzahl sichtbaren Zeilen. Wenn der Parameter multiplemode auf true gesetzt ist, können mehrere Einträge ausgewählt werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 163

164 6.6.2 Methoden void add(string item) fügt einen Eintrag zur Auswahlliste hinzu. String getitem(int index) gibt den Eintrag an der angegebenen Stelle der Auswahlliste zurück. int getitemcount() gibt die Anzahl der Einträge in der Auswahlliste zurück. int getrows() gibt die Anzahl der sichtbaren Einträge in der Auswahlliste zurück. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 164

165 Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class List01 extends java.applet.applet 5 { 6 List ls1 = new List(4,false); 7 List ls2 = new List(4,true); 8 9 public void init() 10 { 11 ls1.add("wahl 1-1"); 12 ls1.add("wahl 1-2"); 13 ls1.add("wahl 1-3"); 14 ls1.add("wahl 1-4"); 15 ls1.add("wahl 1-5"); 16 ls1.add("wahl 1-6"); 17 ls1.add("wahl 1-7"); 18 ls1.add("wahl 1-8"); 19 ls1.add("wahl 1-9"); 20 add(ls1); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 165

166 21 ls2.add("wahl 2-1"); 22 ls2.add("wahl 2-2"); 23 ls2.add("wahl 2-3"); 24 ls2.add("wahl 2-4"); 25 ls2.add("wahl 2-5"); 26 ls2.add("wahl 2-6"); 27 ls2.add("wahl 2-7"); 28 ls2.add("wahl 2-8"); 29 ls2.add("wahl 2-9"); 30 add(ls2); 31 } public void paint(graphics g) 34 { 35 g.drawstring("anzahl der Einträge= " + 36 ls1.getitemcount(),40,120); 37 g.drawstring("anzahl der sichtbaren Einträge= " + 38 ls2.getrows(),40,140); 39 } 40 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 166

167 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem.tex) G 167

168 Kapitel 7 Layoutmanager Innerhalb von Java wird die Anordnung der Dialog-Elemente durch einen Layoutmanager vorgenommen. Java stellt standardmäßig folgende Layoutmanager zur Verfügung, aus denen der Anwender auswählen kann (Standard ist FlowLayout): FlowLayout Alle Dialog-Elemente werden in einer Zeile angeordnet. Ist in der Zeile kein Platz mehr verfügbar, wird in der nächsten Zeile fortgefahren. GridLayout Alle Dialog-Elemente werden in einem rechteckigen Gitter angeordnet. Die Zeilen- und Spaltenzahl muß beim Erstellen angegeben werden. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 168

169 BorderLayout Die Dialog-Elemente werden an den vier Rändern und in der Mitte des Fensters angeordnet. CardLayout Es wird eine Anordnung der Dialog-Elemente derart erzeugt, dass jeweils nur eines angezeigt wird. GridBagLayout Diese Layout ist eine Erweiterung von GridLayout, die es ermöglicht komplizierte Layouts zu erzeugen. Null-Layout Hier wird kein Layout vorgegeben. Alle Objekte müssen von Hand positioniert werden. Die Auswahl des entsprechenden Layoutmanagers mgr übernimmt die Methode setlayout. Syntax: void setlayout(layoutmanager mgr) c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 169

170 7.1 FlowLayout Das FlowLayout stellt die einfachste Layout-Möglichkeit in Java dar. Es ordnet die Komponenten horizontal im GUI an Konstruktoren Syntax: FlowLayout() Konstruiert ein FlowLayout mit zentrierten Komponenten und einem horizontalen und vertikalem Abstand von 5 Einheiten. FlowLayout(int ausrichtung) Konstruiert ein FlowLayout mit nach dem Parameter ausrichtung angeordneten Komponenten und einem horizontalen und vertikalem Abstand von 5 Einheiten. FlowLayout(int ausrichtung,int x, int y) Konstruiert ein FlowLayout mit nach dem Parameter ausrichtung angeordneten Komponenten und einem horizontalen Abstand x und einem vertikalem Abstand y. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 170

171 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Flowlay01 extends Applet 5 { 6 public void init() 7 { 8 setlayout(new FlowLayout(FlowLayout.CENTER,20,20)); 9 add(new Button("Taste 1")); 10 add(new Button("Taste 2")); 11 add(new Button("Taste 3")); 12 add(new Button("Taste 4")); 13 add(new Button("Taste 5")); 14 add(new Button("Taste 6")); 15 add(new Button("Taste 7")); 16 add(new Button("Taste 8")); 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 171

172 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 172

173 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Flowlay10 extends Applet 5 { 6 public void init() 7 { 8 setlayout(new FlowLayout(FlowLayout.CENTER,20,20)); 9 for (int i=0;i<16;i++) 10 add(new Button("Taste_" + (char)(i+ A ))); 11 } 12 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 173

174 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 174

175 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Flowlay11 extends Applet 5 { 6 Button [] b = new Button[24]; 7 Color [] c = {Color.red,Color.blue,Color.green}; 8 9 public void init() 10 { 11 setlayout(new FlowLayout(FlowLayout.CENTER,20,20)); 12 for (int i=0;i<16;i++) 13 { 14 b[i] = new Button(); 15 b[i].setbackground(c[i%3]); 16 b[i].setlabel("taste"+(i+20)); 17 add(b[i]); 18 } 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 175

176 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 176

177 7.2 GridLayout Das GridLayout ordnet die Komponenten in einem Raster aus Zeilen und Spalten an. Zur Generierung eine GridLayouts wird die Klasse GridLayout verwendet Konstruktoren Syntax: GridLayout(int z, int s) Hiermit wird ein Layout-Gitter erzeugt, dessen Zeilenzahl und Spaltenzahl durch die Parameter z und s angegeben wird. GridLayout(int z, int s, int x, int y) Hiermit wird ein Layout-Gitter erzeugt, dessen Zeilenzahl und Spaltenzahl durch die Parameter z und s angegeben wird. Die Parameter x und y geben den horizontalen und vertikalen Abstand der Komponenten innerhalb des Gitters an. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 177

178 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Gridlay01 extends Applet 5 { 6 public void init() 7 { 8 setlayout(new GridLayout(4,2)); 9 add(new Button("Taste 1")); 10 add(new Button("Taste 2")); 11 add(new Button("Taste 3")); 12 add(new Button("Taste 4")); 13 add(new Button("Taste 5")); 14 add(new Button("Taste 6")); 15 add(new Button("Taste 7")); 16 add(new Button("Taste 8")); 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 178

179 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 179

180 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Gridlay02 extends Applet 5 { 6 public void init() 7 { 8 setlayout(new GridLayout(2,4)); 9 add(new Button("Taste 1")); 10 add(new Button("Taste 2")); 11 add(new Button("Taste 3")); 12 add(new Button("Taste 4")); 13 add(new Button("Taste 5")); 14 add(new Button("Taste 6")); 15 add(new Button("Taste 7")); 16 add(new Button("Taste 8")); 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 180

181 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 181

182 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Gridlay03 extends Applet 5 { 6 public void init() 7 { 8 setlayout(new GridLayout(2,4,20,20)); 9 add(new Button("Taste 1")); 10 add(new Button("Taste 2")); 11 add(new Button("Taste 3")); 12 add(new Button("Taste 4")); 13 add(new Button("Taste 5")); 14 add(new Button("Taste 6")); 15 add(new Button("Taste 7")); 16 add(new Button("Taste 8")); 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 182

183 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 183

184 7.3 BorderLayout Beim BorderLayout kann bei jeder Komponente mittels der Himmelsrichtung angegeben werden, wo ein Element angeordnet werden soll. Zunächst wird in den verschiedenen Himmelsrichtungen der Platz belegt, den die dort angeordneten Komponenten benötigen. Der restliche Platz wird der Komponente im Zentrum zugewiesen Konstruktoren Syntax: BorderLayout() erzeugt ein BorderLayout, in welchem die Komponenten aneinander grenzen. BorderLayout(int h, int v) erzeugt ein BorderLayout, in dem die Parameter h und v den horizontalen und vertikalen Abstand der Komponenten angeben. Durch Einsatz der Klasse Panel können die Komponenten geschachtelt werden. Panel p = new Panel(); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 184

185 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Bordlay01 extends Applet 5 { 6 public void init() 7 { 8 setlayout(new BorderLayout()); 9 add("north",new Button("Taste 1")); 10 add("east",new Button("Taste 2")); 11 add("south",new Button("Taste 3")); 12 add("west",new Button("Taste 4")); 13 add("center",new Button("Taste 5")); 14 } 15 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 185

186 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 186

187 Beispiel: 1 import java.applet.*; 2 import java.awt.*; 3 4 public class Bordlay03 extends Applet { 5 Button nord = new Button("Nord"); 6 Button sued = new Button("Sued"); 7 Button ost = new Button("Ost"); 8 Button west = new Button("West"); 9 Button mitte = new Button("Zentrum"); public void init() 12 { 13 setlayout(new BorderLayout()); 14 add(nord,borderlayout.north); 15 add(sued,borderlayout.south); 16 add(ost,borderlayout.east); 17 add(west,borderlayout.west); 18 add(mitte,borderlayout.center); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 187

188 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 188

189 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Bordlay02 extends Applet 5 { 6 public void init() 7 { 8 setlayout(new BorderLayout(20,20)); 9 add("north",new Button("Taste 1")); 10 add("east",new Button("Taste 2")); 11 add("south",new Button("Taste 3")); 12 add("west",new Button("Taste 4")); 13 add("center",new Button("Taste 5")); 14 } 15 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 189

190 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 190

191 7.4 CardLayout Das CardLayout definiert eine Gruppe von Containern (Karten), von denen jeweils nur eine sichtbar ist. In der Regel wird für jede Karte ein Panel verwendet. Es sind folgende Schritte erforderlich: Aufruf des Konstruktors CardLayout(), der ein CardLayout-Objekt anlegt. Setzen dieses Layouts mittels der Methode setlayout, die als Parameter den Namen des CardLayout-Objekts erwartet. Hinzufügen der Komponenten zu einer Karte durch die add-methode. Diese Methode erwartet zwei Parameter add(string kartenname, Container). Anzeige einer Karte durch die Methode show. Diese Methode erwartet als Parameter den Namen des Containers, die die Karten enthält (bei Applets this) und den Namen der Karte, die angezeigt werden soll. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 191

192 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Cardlay01 extends Applet 5 { 6 CardLayout c = new CardLayout(); 7 8 public void init() 9 { 10 c=new CardLayout(); 11 setlayout(c); Panel p1 = new Panel(); 14 Panel p2 = new Panel(); Button bu1 = new Button("Das ist Taste1"); 17 Button bu2 = new Button("Das ist Taste2"); 18 Button bu3 = new Button("Das ist Taste3"); 19 Button bu4 = new Button("Das ist Taste4"); 20 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 192

193 21 p1.add(bu1); 22 p1.add(bu2); 23 p2.add(bu3); 24 p2.add(bu4); add("karte1",p1); 27 add("karte2",p2); 28 c.show(this, "Karte1"); 29 } 30 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 193

194 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 194

195 7.5 GridBagLayout Ein Nachteil der Layouts ist ihre Unflexibilität. Eine Erweiterung des GridLayouts namens GridBagLayout löst einige dieser Probleme, indem eine Komponente mehr als eine Zelle des Gitters belegen kann. Die folgende Grafik stellt beispielsweise zehn Komponente (Knöpfe) dar, die durch das Grid- BagLayout angeordnet werden. Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 195

196 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 196

197 Zur Verwendung dieses Layouts muss man wie folgt vorgehen: Anlegen eines GridBagLayout-Objekts mit Hilfe des Konstruktors GridBagLayout() Setzen dieses Layouts mittels der Methode setlayout, die als Parameter den Namen des GridBagLayout-Objekts erwartet. Definition eines GridBagConstraints-Objekts mittels des Konstruktors GridBagConst In diesem Objekt werden die Plazierungseigenschaften der Komponenten in den Gitterzellen angegeben. Definition der Eigenschaften einer Komponente, indem die Werte des GridBagConstraint Objekts gesetzt werden. Setzen der Eigenschaften der Komponenten mittels der Methode setconstraints(component, GridBagConstraints) die als ersten Parameter eine Komponente und als zweiten Parameter das GridBagConstrai Objekt erwartet. Hinzufügen der Komponente zu einem Container mittels der add-methode. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 197

198 Zum Setzen der Eigenschaften müssen immer die gleichen Angaben für jedes Element gemacht werden. Daher ist es sinnvoll, eine Hilfsmethode zu verwenden. Die Eigenschaften sind: gridx, gridy Diese Werte spezifizieren die Koordinaten innerhalb eines Gitters. Die linke obere Ecke wird mit (0,0) angegeben. gridwidth, gridheight Legt die Anzahl der Zellen in horizontaler und vertikaler Richtung fest, die eine Komponente verwendet. fill Dieser Wert wird verwendet, um eine Komponente zu vergößern, die kleiner ist, als die Zelle, in die sie plaziert wurde. Zur Verfügung stehen die Werte GridBagConstraints.NONE (kein Auffüllen), GridBagConstraints.HORIZONTAL (horizontales Auffüllen), GridBagConstraints.VERTICAL (vertikales Auffüllen) und GridBagConstraints.NONE (Auffüllen in beide Richtungen). ipadx, ipady Diese Werte spezifizieren das innere Auffüllen einer Komponente in einer Zelle, um zusätzlich Platz für eine Komponente zu erzeugen. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 198

199 insets Gibt den Abstand von den Grenzen der Zelle an. Es muss ein Insets-Objekt angelgt werden. anchor Gibt an, wo eine Komponente plaziert werden soll, wenn die Komponente kleiner als eine Zelle ist. Mögliche Werte sind GridBagConstraints.CENTER, GridBagConstraints.NORTH, usw. weightx, weighty Hiermit wird angegeben, wie viel Gewicht eine Zeile oder Spalte innerhalb des Gitters erhalten soll. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 199

200 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class GBaglay01 extends Applet 5 { 6 Button b1 = new Button("Taste 1"); 7 Button b2 = new Button("Taste 2"); 8 Button b3 = new Button("Taste 3"); 9 Button b4 = new Button("Taste 4"); 10 Button b5 = new Button("Taste 5"); 11 Button b6 = new Button("Taste 6"); 12 Button b7 = new Button("Taste 7"); 13 Button b8 = new Button("Taste 8"); public void init() 16 { 17 GridBagLayout gbl = new GridBagLayout(); 18 GridBagConstraints gbc; 19 setlayout(gbl); 20 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 200

201 21 gbc=makegridbagconstraints(0,0,1,1); 22 gbl.setconstraints(b1,gbc); 23 add(b1); 24 gbc=makegridbagconstraints(0,1,1,1); 25 gbl.setconstraints(b2,gbc); 26 add(b2); 27 gbc=makegridbagconstraints(0,2,1,1); 28 gbl.setconstraints(b3,gbc); 29 add(b3); 30 gbc=makegridbagconstraints(0,3,3,1); 31 gbl.setconstraints(b4,gbc); 32 add(b4); 33 gbc=makegridbagconstraints(1,0,1,1); 34 gbl.setconstraints(b5,gbc); 35 add(b5); 36 gbc=makegridbagconstraints(1,1,1,2); 37 gbl.setconstraints(b6,gbc); 38 add(b6); 39 gbc=makegridbagconstraints(2,0,1,3); 40 gbl.setconstraints(b7,gbc); 41 add(b7); 42 gbc=makegridbagconstraints(3,0,1,4); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 201

202 43 gbl.setconstraints(b8,gbc); 44 add(b8); 45 } private GridBagConstraints makegridbagconstraints(int x,int y,int 48 { 49 GridBagConstraints gbc = new GridBagConstraints(); 50 gbc.gridx=x; 51 gbc.gridy=y; 52 gbc.gridwidth=w; 53 gbc.gridheight=h; 54 gbc.fill=gridbagconstraints.both; 55 gbc.weightx=100.; 56 gbc.weighty=100.; 57 gbc.insets=new Insets(2,2,2,2); 58 return(gbc); 59 } 60 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 202

203 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 203

204 Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class GBaglay02 extends Applet 5 { 6 Button b1 = new Button("Taste 1"); 7 Button b2 = new Button("Taste 2"); 8 Button b3 = new Button("Taste 3"); 9 Button b4 = new Button("Taste 4"); 10 Button b5 = new Button("Taste 5"); 11 Button b6 = new Button("Taste 6"); 12 Button b7 = new Button("Taste 7"); 13 Button b8 = new Button("Taste 8"); 14 GridBagLayout gbl = new GridBagLayout(); public void init() 17 { 18 setlayout(gbl); 19 makegridbagconstraints(b1,0,0,1,1); 20 makegridbagconstraints(b2,0,1,1,1); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 204

205 21 makegridbagconstraints(b3,0,2,1,1); 22 makegridbagconstraints(b4,0,3,3,1); 23 makegridbagconstraints(b5,1,0,1,1); 24 makegridbagconstraints(b6,1,1,1,2); 25 makegridbagconstraints(b7,2,0,1,3); 26 makegridbagconstraints(b8,3,0,1,4); 27 } private void makegridbagconstraints(button b,int x,int y,int w,in 30 GridBagConstraints gbc = new GridBagConstraints(); 31 gbc.gridx=x; 32 gbc.gridy=y; 33 gbc.gridwidth=w; 34 gbc.gridheight=h; 35 gbc.fill=gridbagconstraints.both; 36 gbc.weightx=100.; 37 gbc.weighty=100.; 38 gbc.insets=new Insets(2,2,2,2); 39 gbl.setconstraints(b,gbc); 40 add(b); 41 } 42 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 205

206 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 206

207 7.6 NullLayout Beim NullLayout wird nichts vorgegeben, alle Objekte müssen positioniert werden. Beispiel: 1 import java.awt.*; 2 import java.applet.*; 3 4 public class Nulllay10 extends Applet 5 { 6 public void init() 7 { 8 setlayout(null); 9 for (int i=0;i<6;i++) 10 { 11 Button b = new Button("Taste_" + (char)(i+ A )); 12 b.setbounds(10+(i*40),10+(i*30),70,25); 13 add(b); 14 } 15 } 16 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 207

208 Als Ausgabe erhält man: c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 208

209 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 209

210 Kapitel 8 Event-Handling in Java Die Kommunikation zwischen Programm und Betriebssystem erfolgt durch das Versenden von Nachrichten. Die Anwendung wird auf diesem Weg über alle Arten von Ereignissen informiert. Ab der Version 1.1 hat sich das Event-Handling grundlegend verändert. Im Ereignismodell, das vom AWT verwendet wird, werden Ereignisse (Events) von Ereignis- Quellen generiert. Sogenannte Listener können sich für eine Quelle registrieren lassen und werden dann benachrichtigt, wenn ein Ereignis eingetreten ist. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/layout.tex) G 210

211 Als Ereignisse zählen u.a.: Betätigung von Buttons Texteingaben Verwendung der Maus Benutzung der Tastatur und in Java werden grundsätzlich folgende Events verarbeitet: Betätigung der Maustasten Betätigung der Tastatur Betätigung von GUI-Elementen c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 211

212 8.1 Event-Modell Grundsätzlich werden dynamische GUI-Elemente durch Interfaces realisiert. Grund hierfür ist, dass wenn eine Aktion in einem GUI-Element erfasst werden soll, dann muss diese Funktionalität für alle unterschiedlichen Komponenten angeboten werden. Die Definition einer abstrakten Funktionalität ist die Aufgabe eines Interfaces. Aufgrund der Realisierung in Form eines Interfaces können Event-Handler Instanz jeder Klasse sein, wenn sie das Interface eines Event-Listeners implementiert haben. Jedes Programm, das über einen Event-Handler verfügt, enthält folgende drei Bestandteile: 1. In der Klassendefinition des Event-Handlers muss angegeben werden, dass ein Interface eines Listeners implementiert ist. public class Bsp_classe implements ActionListener {... } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 212

213 2. Im zweiten Schritt muss der Code hinzugefügt werden, der eine Instanz einer Event- Handler-Klasse für eine oder mehrere Komponenten registriert. Zur Registrierung wird die Methode addactionlistener verwendet. bsp_komponente.addactionlistener(b); Es wird ein Listener registriert, der in der Instanz b der Klasse Bsp_classe implementiert ist, für die Komponente bsp_komponente. 3. Im dritten Schritt müssen die Methoden des Listener-Interfaces implementiert werden. public void actionperformed(actionevent e) { // Code der als Reaktion auf den Event ausgeführt wird. } Im folgenden wird die Umsetzung dieser Vorgehensweise am Beispiel des Actionlisteners vorgestellt. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 213

214 Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Butt02 extends java.applet.applet implements ActionLis 5 { 6 Button bu1 = new Button("Ende"); 7 8 public void actionperformed(actionevent e) 9 { 10 System.out.println("Ende"); 11 } public void init() 14 { 15 add(bu1); 16 bu1.addactionlistener(this); 17 } 18 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 214

215 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 215

216 Da jedoch nur ein Listener implementiert ist, kann auch bei mehreren Tasten erst einmal nicht unterschieden werden, welche Taste gedrückt wurde. Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Butt03 extends java.applet.applet implements ActionLis 5 { 6 Button bu1 = new Button("Taste_A"); 7 Button bu2 = new Button("Taste_B"); 8 Button bu3 = new Button("Taste_C"); 9 10 public void actionperformed(actionevent e) 11 { 12 System.out.println("gedrückt!"); 13 } public void init() c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 216

217 16 { 17 add(bu1); 18 bu1.addactionlistener(this); 19 add(bu2); 20 bu2.addactionlistener(this); 21 add(bu3); 22 bu3.addactionlistener(this); 23 } 24 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 217

218 Abhilfe schafft hier die Methode getactioncommand(), die nach der Implementation eines ActionListeners verfügbar ist. Syntax: String getactioncommand() Diese Methode ergibt eine Zeichenkette, die das GUI-Element beschreibt. Im Falle eines Buttons ist dies der Text, der auf dem Button steht. Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Butt04 extends java.applet.applet 5 implements ActionListener 6 { 7 Button bu1 = new Button("Taste_A"); 8 Button bu2 = new Button("Taste_B"); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 218

219 9 Button bu3 = new Button("Taste_C"); public void actionperformed(actionevent e) 12 { 13 System.out.println(e.getActionCommand()); 14 } public void init() 17 { 18 add(bu1); 19 bu1.addactionlistener(this); 20 add(bu2); 21 bu2.addactionlistener(this); 22 add(bu3); 23 bu3.addactionlistener(this); 24 } 25 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 219

220 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 220

221 Diese Vorgehensweise löst allerdings nicht das Problem, wenn die Tasten keine Aufschrift tragen. Abhilfe schaffen in diesem Fall die Methoden setname und getsource. Syntax: void setname(string name) Object getsource(); setname() fügt dem Element einen Namen hinzu. getsource() ergibt eine Beschreibung des Elements, der man den hinzugefügten Namen entnehmen kann. Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Butt05 extends java.applet.applet 5 implements ActionListener 6 { c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 221

222 7 Button bu1 = new Button(" "); 8 Button bu2 = new Button(" "); 9 Button bu3 = new Button(" "); public void actionperformed(actionevent e) 12 { 13 System.out.println(e.getSource()); 14 } public void init() 17 { 18 add(bu1); 19 bu1.setbackground(color.red); 20 bu1.setname("rot"); 21 bu1.addactionlistener(this); 22 add(bu2); 23 bu2.setbackground(color.green); 24 bu2.setname("grün"); 25 bu2.addactionlistener(this); 26 add(bu3); 27 bu3.setbackground(color.blue); 28 bu3.setname("blau"); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 222

223 29 bu3.addactionlistener(this); 30 } 31 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 223

224 Auch bei der Menüleiste wird der Actionlistener verwendet. Beispiel: 1 import JcL.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 5 public class Frame24 extends Frame implements ActionListener 6 { 7 // Konstruktor 8 public Frame24() 9 { 10 super("frame mit Menue"); 11 MenuBar mb = new MenuBar(); 12 setmenubar(mb); 13 // Erste Menuespalte 14 Menu datei = new Menu("Datei"); 15 datei.add("oeffnen"); 16 datei.add("schliessen"); 17 datei.addseparator(); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 224

225 18 datei.add("beenden"); 19 // Zweite Menuespalte 20 Menu extra = new Menu("Extra"); 21 extra.add("info"); 22 extra.add("version"); 23 // Menues hinzufuegen 24 mb.add(datei); 25 mb.add(extra); 26 // ActionListener fuer Menue "datei" hinzufügen 27 datei.addactionlistener(this); 28 extra.addactionlistener(this); 29 } public void actionperformed(actionevent e) 32 { 33 System.out.println("Aktion: " + e.getactioncommand()); 34 if (e.getactioncommand().equals("beenden")) 35 { 36 System.exit(0); 37 } 38 } 39 c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 225

226 40 public static void main(string[] args) 41 { 42 // Instanz fuer Frame erzeugen 43 Frame24 f = new Frame24(); 44 f.setsize(300,300); 45 f.setlocation(100,100); 46 f.setvisible(true); 47 f.addwindowlistener(new WAdapt()); 48 } 49 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 226

227 Eine weitere Alternative ist das Anlegen eines Listeners in einer eigenen Klasse. Dies ermöglicht es, jedem Element seinen eigenen Listener hinzuzufügen. Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class Butt22 extends java.applet.applet 5 { 6 Button bu1 = new Button("Taste1"); 7 Button bu2 = new Button("Taste2"); 8 Button bu3 = new Button("Taste3"); 9 10 class AListen implements ActionListener 11 { 12 String txt; public AListen(String txt) 15 { 16 this.txt=txt; c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 227

228 17 } public void actionperformed(actionevent e) 20 { 21 System.out.println(txt + " wurde ausgewählt."); 22 } 23 } AListen al1 = new AListen("T1"); 26 AListen al2 = new AListen("T2"); 27 AListen al3 = new AListen("T3"); public void init() 30 { 31 add(bu1); 32 bu1.addactionlistener(al1); 33 add(bu2); 34 bu2.addactionlistener(al2); 35 add(bu3); 36 bu3.addactionlistener(al3); 37 } 38 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 228

229 Dann ist im nächsten Schritt das Auslagern der inneren Klasse in eine eigene Datei naheliegend. Beispiel: 1 import java.awt.*; 2 3 public class Butt23 extends java.applet.applet 4 { 5 Button bu1 = new Button("Taste1"); 6 Button bu2 = new Button("Taste2"); 7 Button bu3 = new Button("Taste3"); 8 9 AListen al1 = new AListen("T1"); 10 AListen al2 = new AListen("T2"); 11 AListen al3 = new AListen("T3"); public void init() 15 { 16 add(bu1); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 229

230 17 bu1.addactionlistener(al1); 18 add(bu2); 19 bu2.addactionlistener(al2); 20 add(bu3); 21 bu3.addactionlistener(al3); 22 } 23 } Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class AListen implements ActionListener 5 { 6 String txt; 7 8 public AListen(String txt) 9 { 10 this.txt=txt; c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 230

231 11 } 12 public void actionperformed(actionevent e) 13 { 14 System.out.println(txt + " wurde ausgewählt."); 15 } 16 } Nach Übergabe der Elemente als Parameter können diese dann beliebig modifiziert werden. Beispiel: 1 import java.awt.*; 2 3 public class Butt44 extends java.applet.applet 4 { 5 Button bu1 = new Button(" "); 6 Button bu2 = new Button(" "); 7 Button bu3 = new Button(" "); 8 9 AListen4 al1 = new AListen4(bu1); 10 AListen4 al2 = new AListen4(bu2); c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 231

232 11 AListen4 al3 = new AListen4(bu3); public void init() 14 { 15 add(bu1); 16 bu1.setbackground(color.red); 17 bu1.addactionlistener(al1); 18 add(bu2); 19 bu2.setbackground(color.red); 20 bu2.addactionlistener(al2); 21 add(bu3); 22 bu3.setbackground(color.red); 23 bu3.addactionlistener(al3); 24 } 25 } Beispiel: 1 import java.awt.*; 2 import java.awt.event.*; c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 232

233 3 4 public class AListen4 implements ActionListener 5 { 6 Button bu; 7 Color [] c = {Color.red,Color.blue,Color.green}; 8 int i=0; 9 10 public AListen4(Button bu) 11 { 12 this.bu=bu; 13 } public void actionperformed(actionevent e) 16 { 17 i++; 18 bu.setbackground(c[i%3]); 19 } 20 } c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/event.tex) G 233

234 Kapitel 9 Weitere Dialogelemente c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem2.tex) G 234

235 9.1 Textfelder Im Gegensatz zu Textmarken sind Textfelder vom Anwender beschreibbar. In Java steht hierfür die KLasse TextField zur Verfügung Konstruktoren Syntax: TextField() erzeugt ein leeres Textfeld ohne Größenangabe. TextField(int anzahl) erzeugt ein leeres Textfeld für anzahl Zeichen. TextField(String text) erzeugt ein Textfeld ohne Größenangabe, das mit dem Text text initialisiert wird. TextField(String text, int columns) erzeugt ein leeres Textfeld für anzahl Zeichen, das mit dem Text text initialisiert wird. c MMII Joachim u. Marion Lammarsch, Rothenberg (grobfl/dialelem2.tex) G 235

236 Inhaltsverzeichnis 1 Grundlagen des Arbeitens mit Applets G Klassenhierachie von Applet G Ausgabemöglichkeiten G Unterschiede von Applets versus Applikationen G Kommunikation mit dem Browser G Instanzierung des Applets G Initialisierung des Applets G Starten des Applets G Stoppen des Applets G Zerstören des Applets G Einbinden eines Applets G Anzeigen eines Applets G 16 2 Grundlagen des Arbeitens mit Frames G 21 c MMII Joachim u. Marion Lammarsch, Rothenberg (toc) G i

237 2.1 Klassenhierarchie von Frame G Konstruktoren G Methoden G Window-Listener G 26 3 Einfache graphische Ausgabe G Größe eines Applets G Parameterübergabe G Einfache Textausgabe G Die Methode drawstring G Die Methoden drawbyte und drawchar G Schriftname, Schriftstil und Schriftgröße G Schriftname G Schriftstil G Schriftgröße G Weitere Beispiele G Einfache graphische Figuren G Linien G Rechtecke und Ovale G Ovale und Kreise G Kreisbögen G Polygone G 100 c MMII Joachim u. Marion Lammarsch, Rothenberg (toc) G ii

238 3.5.6 Verbindung von Punkten, Kopieren von Bereichen G Weitere Beispiele G Verwendung von Farben G Bilder und Sound G Einbinden von Bildern G Ausgabe von Sound G Die Methode play der Klasse Applet G Erzeugung eines Objektes der Klasse AudioClip G Dialogelemente G Anlegen einer Menü-Leiste G Konstruktoren G Methoden G Textmarken G Schalttasten G Check- und Radioboxen G Checkboxen G Radioboxen G Auswahllisten G Konstruktor G Methoden G 159 c MMII Joachim u. Marion Lammarsch, Rothenberg (toc) G iii

239 6.6 Listen G Konstruktor G Methoden G Layoutmanager G FlowLayout G Konstruktoren G GridLayout G Konstruktoren G BorderLayout G Konstruktoren G CardLayout G GridBagLayout G NullLayout G Event-Handling in Java G Event-Modell G Weitere Dialogelemente G Textfelder G Konstruktoren G 235 c MMII Joachim u. Marion Lammarsch, Rothenberg (toc) G iv

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

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung Grafikausgabe mit dem Abstract- Windowing-Toolkit Eine Einführung Inhalt Einführung Grundlegende Eigenschaften des Abstract-Windowing- Toolkit (AWT) Grundlagen Grafikausgabe Linien zeichnen Rechtecke zeichnen

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

Applets I. Grundlagen der g Applet-Programmierung

Applets I. Grundlagen der g Applet-Programmierung Applets I Grundlagen der g Applet-Programmierung 2 Inhalt Applets Was sind Applets Entwicklung Grundlagen Zustandssteuerung eines Applets Methoden zum Nachrichtentransfer Soundausgabe Animation Einbindung

Mehr

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

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog. Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung

Mehr

GUI Programmierung in Java

GUI Programmierung in Java vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1 (Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf

Mehr

Grundlagen der Programmierung APPLETS

Grundlagen der Programmierung APPLETS Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets

Mehr

Applications Applets (eingeschränkte Rechte)

Applications Applets (eingeschränkte Rechte) 1 Arten von Java-Programmen Man unterscheidet 2 verschiedene Arten von Java-Programmen: Applications Applets (eingeschränkte Rechte) Erstere sind eigenständige Programme. Letztere sind "kleine" Programme,

Mehr

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

Programmieren II. Java-Applets. Heusch 17 Ratz 4. www.kit.edu. Institut für Angewandte Informatik Programmieren II Java-Applets Heusch 17 Ratz 4 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Was sind Java-Applets? Minianwendung

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth [email protected] 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr

Praktikum: Einstieg: Arbeitsplatz, JCreator

Praktikum: Einstieg: Arbeitsplatz, JCreator Modul OPR Praktikum: Einstieg: Arbeitsplatz, JCreator Aufgabe 1 Richten Sie Ihren OPR-Arbeitsplatz ein: Java-Tool JCreator (nur lauffähig machen!) ->Erklärungen kommen später! Wie funktioniert Java? Der

Mehr

HTML Programmierung. Aufgaben

HTML Programmierung. Aufgaben HTML Programmierung Dr. Leander Brandl BRG Keplerstraße - A-8020 Graz Universität Graz - Institut für Experimentalphysik Fachdidaktik der Physik http://w4.brgkepler.asn-graz.ac.at 1. Die erste Web-Seite

Mehr

GRAF-SYTECO. Handbuch. Zeichensatzgenerator für AT-Geräte. Erstellt: November 2004. SYsteme TEchnischer COmmunikation

GRAF-SYTECO. Handbuch. Zeichensatzgenerator für AT-Geräte. Erstellt: November 2004. SYsteme TEchnischer COmmunikation GRAF-SYTECO Handbuch Zeichensatzgenerator für AT-Geräte Dokument: Status: H165A0 Freigegeben Erstellt: November 2004 SYsteme TEchnischer COmmunikation GRAF-SYTECO Gmbh & Co.KG * Kaiserstrasse 18 * D-78609

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

GUI Programmierung mit JAVA Swing

GUI Programmierung mit JAVA Swing GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische

Mehr

Die Dateiablage Der Weg zur Dateiablage

Die Dateiablage Der Weg zur Dateiablage Die Dateiablage In Ihrem Privatbereich haben Sie die Möglichkeit, Dateien verschiedener Formate abzulegen, zu sortieren, zu archivieren und in andere Dateiablagen der Plattform zu kopieren. In den Gruppen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Applets Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Einführung 2 Sicherheits-Maßnahmen 3 Ereignisgesteuerte Programmierung

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Ab jetzt: Java ohne Kara

Ab jetzt: Java ohne Kara Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen JavaKara -> Java Ablauf in JavaKara: 1. Programm schreiben 2. Kompilieren 3. Programm starten Ablauf in Java

Mehr

Java Projekt: Tic Tac Toe + GUI

Java Projekt: Tic Tac Toe + GUI Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel

Mehr

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Nach dem Update auf die Version 1.70 bekommen Sie eine Fehlermeldung,

Mehr

In dem unterem Feld können Sie Ihre E-Mail eintragen, wenn sie im System hinterlegt wurde. Dann wird Ihnen Ihr Passwort noch einmal zugeschickt.

In dem unterem Feld können Sie Ihre E-Mail eintragen, wenn sie im System hinterlegt wurde. Dann wird Ihnen Ihr Passwort noch einmal zugeschickt. Wyhdata Hilfe Login: www.n-21online.de (Login Formular) Ihr Login-Name: Hier tragen Sie Redak1 bis Redak6 ein, der Chefredakteur bekommt ein eigenes Login. Ihr Passwort: Eine Zahlenkombination, die vom

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

Mehr

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov Java - AWT Basispraktikum SystemArchitektur WS 2008/2209 09.12.2008 Atanas Dimitrov 1 Was besprechen wir heute: AWT Klassen Die Klasse Graphics AWT Methoden Die Klasse ToolKit Ausgabe von Bilder Die Klasse

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Anleitung für das Content Management System

Anleitung für das Content Management System Homepage der Pfarre Maria Treu Anleitung für das Content Management System Teil 4 Kalendereinträge Erstellen eines Kalender-Eintrages 1. Anmeldung Die Anmeldung zum Backend der Homepage erfolgt wie gewohnt

Mehr

Profi cash 10. Electronic Banking. Installation und erste Schritte. Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme

Profi cash 10. Electronic Banking. Installation und erste Schritte. Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme Electronic Banking Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme Profi cash 10 Installation und erste Schritte Legen Sie bitte die CD ein. Sollte die CD nicht von alleine

Mehr

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht

Mehr

Dokumentation. Mindestanforderungen: Das Board

Dokumentation. Mindestanforderungen: Das Board Dokumentation Mindestanforderungen: 1. Einen Computer (Mac oder Pc) oder flash-unterstutztes System 2. Flash Player oder Browser mit Flash PlugIn 3. Das Board 4. Tondateien zum Abspielen Je mehr Tondateien

Mehr

AUF LETZTER SEITE DIESER ANLEITUNG!!!

AUF LETZTER SEITE DIESER ANLEITUNG!!! BELEG DATENABGLEICH: Der Beleg-Datenabgleich wird innerhalb des geöffneten Steuerfalls über ELSTER-Belegdaten abgleichen gestartet. Es werden Ihnen alle verfügbaren Belege zum Steuerfall im ersten Bildschirm

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, [email protected], www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

1. Arbeiten mit dem Touchscreen

1. Arbeiten mit dem Touchscreen 1. Arbeiten mit dem Touchscreen 1.1. Einleitung Als weitere Buchungsart steht bei DirectCASH ein Touchscreen zur Verfügung. Dieser kann zwar normal via Maus bedient werden, vorzugsweise jedoch durch einen

Mehr

iphone-kontakte zu Exchange übertragen

iphone-kontakte zu Exchange übertragen iphone-kontakte zu Exchange übertragen Übertragen von iphone-kontakten in ein Exchange Postfach Zunächst muss das iphone an den Rechner, an dem es üblicherweise synchronisiert wird, angeschlossen werden.

Mehr

Persönliches Adressbuch

Persönliches Adressbuch Persönliches Adressbuch Persönliches Adressbuch Seite 1 Persönliches Adressbuch Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. ALLGEMEINE INFORMATIONEN ZUM PERSÖNLICHEN

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

Mehr

Neue Schriftarten installieren

Neue Schriftarten installieren .DIE Neue Schriftarten installieren Die Informationen zu jeder Schriftart (Font) sind in jeweils einer Datei untergebracht, der sog. Font-Datei mit der Endung.ttf ttf steht für True Type Font und bedeutet,

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications Windows 8 Systemsteuerung > Programme > Windows Features aktivieren / deaktivieren > Im Verzeichnisbaum

Mehr

Firefox: Die Lesezeichen im Griff

Firefox: Die Lesezeichen im Griff Firefox: Die Lesezeichen im Griff Die Favoriten im Internet Explorer sind eine Lachnummer gegen die Lesezeichen im Firefox. Eingetippte Schlagworte reichen, um sie aufzurufen. Außerdem können ganze Befehlsfolgen

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Computeria Solothurn

Computeria Solothurn Computeria Solothurn Seniorinnen und Senioren entdecken den Computer und das Internet Sich mit «TeamViewer» von einem Supporter helfen lassen Diese Anleitung und die Illustrationen wurden unter Mac OS

Mehr

Grafikprogrammierung mit Java Teil 1/2

Grafikprogrammierung mit Java Teil 1/2 Grafikprogrammierung mit Java Teil 1/2 Martin Tischmann 15. Juni 2009 Inhaltsverzeichnis Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16 Änderungen in Dokumentation und Software sind vorbehalten! Copyright Copyright 2005 COSA GmbH Alle Rechte vorbehalten.

Mehr

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Excel-Schnittstelle Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Voraussetzung: Microsoft Office Excel ab Version 2000 Zum verwendeten Beispiel:

Mehr

eduvote Ein Umfragesystem für Lehrveranstaltungen - PowerPoint Add-In -

eduvote Ein Umfragesystem für Lehrveranstaltungen - PowerPoint Add-In - eduvote Ein Umfragesystem für Lehrveranstaltungen - PowerPoint Add-In - Übersicht: Nach dem Herunterladen und Ausführen des Installationsprogamms für das eduvote PowerPoint Add-In befindet sich rechts

Mehr

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann, 2005. 1

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann, 2005. 1 Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann, 2005. 1 Starten der CD Nach dem Einlegen der CD in Ihr CD-Laufwerk müsste die CD von selbst

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

KURZANLEITUNG CLOUD OBJECT STORAGE

KURZANLEITUNG CLOUD OBJECT STORAGE KURZANLEITUNG CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung... Seite 03 2. Anmelden am Cloud&Heat Dashboard... Seite 04 3. Anlegen eines Containers... Seite 05

Mehr

Favoriten sichern. Sichern der eigenen Favoriten aus dem Webbrowser. zur Verfügung gestellt durch: ZID Dezentrale Systeme.

Favoriten sichern. Sichern der eigenen Favoriten aus dem Webbrowser. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Favoriten sichern Sichern der eigenen Favoriten aus dem Webbrowser zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 20 Inhaltsverzeichnis Einleitung... 3 Mozilla Firefox...

Mehr

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen Um die maximale Sicherheit für das Betriebssystem und Ihre persönlichen Daten zu gewährleisten, können Sie Programme von Drittherstellern

Mehr

Anleitung BFV-Widget-Generator

Anleitung BFV-Widget-Generator Anleitung BFV-Widget-Generator Seite 1 von 6 Seit dem 1. Oktober 2014 hat der Bayerische Fußball-Verband e.v. neue Widgets und einen neuen Baukasten zur Erstellung dieser Widgets veröffentlicht. Im Folgenden

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

Mehr

Hilfe zur Dokumentenverwaltung

Hilfe zur Dokumentenverwaltung Hilfe zur Dokumentenverwaltung Die Dokumentenverwaltung von Coffee-CRM ist sehr mächtig und umfangreich, aber keine Angst die Bedienung ist kinderleicht. Im Gegensatz zur Foto Galeria können Dokumente

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

System-Update Addendum

System-Update Addendum System-Update Addendum System-Update ist ein Druckserverdienst, der die Systemsoftware auf dem Druckserver mit den neuesten Sicherheitsupdates von Microsoft aktuell hält. Er wird auf dem Druckserver im

Mehr

Anleitung für die Registrierung und das Einstellen von Angeboten

Anleitung für die Registrierung und das Einstellen von Angeboten Anleitung für die Registrierung und das Einstellen von Angeboten Das FRROOTS Logo zeigt Ihnen in den Abbildungen die wichtigsten Tipps und Klicks. 1. Aufrufen der Seite Rufen Sie zunächst in Ihrem Browser

Mehr

Dokumentation zum Spielserver der Software Challenge

Dokumentation zum Spielserver der Software Challenge Dokumentation zum Spielserver der Software Challenge 10.08.2011 Inhaltsverzeichnis: Programmoberfläche... 2 Ein neues Spiel erstellen... 2 Spielfeldoberfläche... 4 Spielwiederholung laden... 5 Testdurchläufe...

Mehr

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Allgemeines: Bitte lesen Sie sich diese Anleitung zuerst einmal komplett durch. Am Besten, Sie drucken sich diese Anleitung

Mehr

Live Update (Auto Update)

Live Update (Auto Update) Live Update (Auto Update) Mit der Version 44.20.00 wurde moveit@iss+ um die Funktion des Live Updates (in anderen Programmen auch als Auto Update bekannt) für Programm Updates erweitert. Damit Sie auch

Mehr

Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Sichern der persönlichen Daten auf einem Windows Computer

Sichern der persönlichen Daten auf einem Windows Computer Sichern der persönlichen Daten auf einem Windows Computer DIRECTION DES SERVICES IT SERVICE DIT-MI DIREKTION DER IT-DIENSTE DIENSTSTELLE DIT-MI 1/9 1 Inhaltsverzeichnis 2 Einleitung... 3 3 Outlook Daten...

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Homepage-Manager Navigation Home Der Homepage-Manager bietet die Möglichkeit im Startmenü unter dem Punkt Home einfach und schnell

Mehr

Handbuch zum Excel Formular Editor

Handbuch zum Excel Formular Editor Handbuch zum Excel Formular Editor Mit diesem Programm können Sie die Zellen von ihrer Excel Datei automatisch befüllen lassen. Die Daten können aus der Coffee Datenbank, oder einer weiteren Excel Datendatei

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

virtuos Leitfaden für die virtuelle Lehre

virtuos Leitfaden für die virtuelle Lehre virtuos Zentrum zur Unterstützung virtueller Lehre der Universität Osnabrück virtuos Leitfaden für die virtuelle Lehre Zentrum virtuos Tel: 0541-969-6501 Email: [email protected] URL: www.virtuos.uni-osnabrueck.de

Mehr

SICHERN DER FAVORITEN

SICHERN DER FAVORITEN Seite 1 von 7 SICHERN DER FAVORITEN Eine Anleitung zum Sichern der eigenen Favoriten zur Verfügung gestellt durch: ZID Dezentrale Systeme März 2010 Seite 2 von 7 Für die Datensicherheit ist bekanntlich

Mehr

WORKSHOP für das Programm XnView

WORKSHOP für das Programm XnView WORKSHOP für das Programm XnView Zur Bearbeitung von Fotos für die Nutzung auf Websites und Online Bildergalerien www.xnview.de STEP 1 ) Bild öffnen und Größe ändern STEP 2 ) Farbmodus prüfen und einstellen

Mehr

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Das können wir Ihnen versprechen: An der neuen Taskleiste in Windows 7 werden Sie sehr viel Freude haben. Denn diese sorgt

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

Mehr

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de Inhaltsverzeichnis Inhaltsverzeichnis... 1 Grundlagen... 2 Hyperlinks innerhalb einer Datei... 2 Verweisziel definieren... 2 Einen Querverweis setzen... 3 Verschiedene Arten von Hyperlinks... 3 Einfache

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Bilder zum Upload verkleinern

Bilder zum Upload verkleinern Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Office-Programme starten und beenden

Office-Programme starten und beenden Office-Programme starten und beenden 1 Viele Wege führen nach Rom und auch zur Arbeit mit den Office- Programmen. Die gängigsten Wege beschreiben wir in diesem Abschnitt. Schritt 1 Um ein Programm aufzurufen,

Mehr

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen. Millennium SMS Service Schnellübersicht Seite 1 von 6 1. Tägliche Arbeiten mit der SMS Bestätigung Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Mehr

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite. ewon - Technical Note Nr. 003 Version 1.2 Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite. Übersicht 1. Thema 2. Benötigte Komponenten 3. Downloaden der Seiten und aufspielen auf

Mehr

Ihr CMS für die eigene Facebook Page - 1

Ihr CMS für die eigene Facebook Page - 1 Ihr CMS für die eigene Facebook Page Installation und Einrichten eines CMS für die Betreuung einer oder mehrer zusätzlichen Seiten auf Ihrer Facebook Page. Anpassen der "index.php" Installieren Sie das

Mehr

Kapitel 1: Betriebssystem IX. W indows Explorer und der Arbeitsplatz Teil 2

Kapitel 1: Betriebssystem IX. W indows Explorer und der Arbeitsplatz Teil 2 1.0 Die Darstellung im Explorer, Arbeitsplatz bzw. Eigene Dateien ändern bzw. einstellen Gegenüber den Betriebssystemen Windows 98 / NT / 2000 hat sich die Darstellung des Explorers in den Betriebssystemen

Mehr

Nutzung des mymmx Web Clients von Tess

Nutzung des mymmx Web Clients von Tess Nutzung des mymmx Web Clients von Tess Mit diesem Client können Sie den Tess Relay-Dienst TeScript mit Ihrem PC oder Laptop (unabhängig vom Betriebssystem wie Windows oder Mac) über den java-fähigen Internetbrowser

Mehr

Übung 1. Explorer. Paint. Paint. Explorer

Übung 1. Explorer. Paint. Paint. Explorer Seite 1 Übung 1 1. Öffnen Sie das Programm PAINT 2. Maximieren Sie das Fenster 3. Verkleinern Sie das Fenster (Nicht Minimieren!!) 4. Öffnen Sie ZUSÄTZLICH zu PAINT den Windows Explorer 5. Verkleinern

Mehr

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013 Visio 2013 Linda York 1. Ausgabe, Oktober 2013 Grundlagen V2013 2 Visio 2013 - Grundlagen 2 Einfache Zeichnungen erstellen In diesem Kapitel erfahren Sie wie Sie Shapes einfügen, kopieren und löschen was

Mehr