Grafikprogrammierung in Java: Grundlagen

Größe: px
Ab Seite anzeigen:

Download "Grafikprogrammierung in Java: Grundlagen"

Transkript

1 Grafikprogrammierung in Java: Grundlagen 11.1 Grundlagen 11.2 Grafische Grundelemente 11.3 Fensterklassen 11.4 Ereignisse und Widgets 11.5 Applets 11.6 Die Swing-Klassen 11.1 Grundlagen 11-1

2 Schnittstellen für Anwenderprogramme Eine Schnittstelle für Anwenderprogramme (application programming interface, API) stellt wohldefinierte und standardisierte Klassen und Methoden zur Verfügung, die von Anwenderprogrammen genutzt werden können. APIs ermöglichen es, vorhandene Software um weitere Funktionen zu ergänzen. Java stellt beispielsweise APIs für die folgenden Zwecke zur Verfügung: Grafikprogrammierung (mit AWT, Swing) Datenbankzugriffe (mit JDBC) Netzwerkprogrammierung Verarbeitung, Auswertung und Transformation von XML-Dokumenten Verschlüsselung von Daten (Sicherheit, Kryptografie, SecurityManager) Sound Grundlagen 11-2

3 Grafikprogrammierung Java bietet den Programmierern zwei Bibliotheken zur Programmierung von grafischen Benutzeroberflächen (graphical user interface, GUI) an: Abstract Window Toolkit (AWT) Das AWT ermöglicht die Ausführung grundlegender grafischer Operationen. Die Klassen und Methoden des AWTs sind im Standardpaket java.awt enthalten. Swing Seit der Version 1.1 gibt es eine zweite Grafikbibliothek im Java Development Kit. Sie heißt Swing und ist Bestandteil des Erweiterungspakets javax.swing. Diese Bibliothek beseitigt etliche Schwächen des AWTs und bietet eine weitgehend plattformunabhängige Schnittstelle. Die Möglichkeiten, die Swing bietet, übersteigen die des AWTs Grundlagen 11-3

4 Grafikprogrammierung Neben AWT und Swing gibt es eine verbreitete Bibliothek zur Programmierung grafischer Benutzeroberflächen: Standard Widget Toolkit (SWT) SWT ist eine Bibliothek für die Erstellung grafischer Oberflächen mit Java. Sie wurde im Jahr 2001 von IBM für die Entwicklungsumgebung Eclipse entwickelt und kommt in einer ganzen Reihe von Anwendungen zum Einsatz, beispielsweise Eclipse selbst. SWT leidet auf einigen Nicht-Windows-Plattformen unter Effizienzproblemen. SWT gehört nicht zum JDK. Wir gehen hier (aus Zeitgründen) nicht auf SWT ein. Es gibt weitere Bibliotheken Grundlagen 11-4

5 Das Abstract Window Toolkit Die Fähigkeiten des AWTs lassen sich in vier Gruppen einteilen: Grundoperationen zum Zeichnen von Linien und Flächen und zur Ausgabe von Text Methoden zur Programmsteuerung durch die Behandlung von Maus-, Tastaturund Fensterereignissen Dialogelemente zur Kommunikation mit dem Anwender Fortgeschrittene Operationen zur Ausgabe von Bitmaps und Tönen 11.1 Grundlagen 11-5

6 Ein einführendes Beispiel import java.awt.*; public class Fenster extends Frame { } Fenster() { setbackground(color.yellow); setsize(200,150); setlocation(500,500); setvisible(true); } public static void main(string[] args) { new Fenster(); } 11.1 Grundlagen 11-6

7 Das Abstract Window Toolkit Zum Ableiten einer eigenen Fensterklasse wird in der Regel entweder die Klasse Frame oder die Klasse Dialog verwendet. Um ein neues Fenster zu erhalten, muss ein Objekt der Klasse Frame erzeugt, auf die gewünschte Größe gebracht und durch Aufruf der Methode setvisible sichtbar gemacht werden. Die Ausgabe in ein Fenster erfolgt durch Überlagern der Methode paint. Diese Methode wird immer dann aufgerufen, wenn das Fenster neu gezeichnet werden muss, z. B. beim Programmstart oder beim Verändern der Größe. Die Methode void paint(graphics g) erhält als Parameter einen grafischen Kontext. Hierunter versteht man allgemeine Einstellungen für Schrift und Grafik, beispielsweise den aktuellen Font und die aktuelle Farbe Grundlagen 11-7

8 import java.awt.*; class Rechteck extends Canvas { Ein einführendes Beispiel public void paint(graphics g) { g.setcolor(color.red); g.fillrect(20,20,100,40); g.setcolor(color.black); g.drawstring("ein rotes Rechteck",20,80); setlocation(20,15); } } // Vokabeltest: canvas = Leinwand 11.1 Grundlagen 11-8

9 class EinfachesFenster extends Frame { EinfachesFenster() { add(new Rechteck()); setbackground(color.yellow); setsize(200,150); setvisible(true); setlocation(200,200); } } public static void main(string[] args) { new EinfachesFenster(); } 11.1 Grundlagen 11-9

10 Ereignisgesteuerte Programmierung Die Programme, die wir bisher betrachtet haben, arbeiten nach dem Prinzip der Ein-Ausgabe-Programmierung. Dieses Modell wird jetzt zur ereignisgesteuerten Programmierung erweitert. Ereignisse sind beispielsweise das Drücken einer Taste, die Betätigung des Rollbalkens oder die Bewegung der Maus. Es gibt viele Varianten der ereignisgesteuerten Programmierung. In Java wird das sogenannte Delegation Based Event Handling verwendet. Es bietet die Möglichkeit, GUI-Ereignisse an beliebige Objekte weiterzuleiten und dort zu behandeln. Auf diese Weise können die Oberfläche und die eigentliche Anwendung klar voneinander getrennt werden Grundlagen 11-10

11 Ereignisgesteuerte Programmierung Jedes Ereignis besitzt eine Quelle (Source). Ein Ereignis kann von Beobachtern (Listener) wahrgenommen werden. Die Anmeldung von Beobachtern zur Benachrichtigung vom Eintreten eines Ereignisses ist frei programmierbar und muss immer explizit erfolgen. Es ist nicht festgelegt, in welcher Reihenfolge die Beobachter vom Eintreten eines Ereignisses informiert werden. Sichergestellt ist lediglich, dass jeder Beobachter eine Kopie des ursprünglichen Ereignisses erhält. Bei der Verbreitung von Ereignissen ist zwischen den Modi single-cast und multi-cast zu unterscheiden. Für Single-Cast-Ereignisse wird der Beobachter mit einer setxxlistener-methode gesetzt, für Multi-Cast-Ereignisse wird ein Beobachter mit einer addxxlistener-methode der Menge der Beobachter hinzugefügt Grundlagen 11-11

12 Beispiel: Schließen eines Fensters Um ein Fenster zu schließen, muss ein WindowListener registriert werden. Hierbei handelt es sich um einen Beobachter, dessen Methode windowclosing aufgerufen wird, wenn der Anwender das Fenster über ein System-Menü oder einen Button schließen möchte. Das Fenster wird durch setvisible(false) unsichtbar gemacht, seine Ressourcen durch dispose() wieder freigegeben Grundlagen 11-12

13 Beispiel: Schließen eines Fensters import java.awt.*; import java.awt.event.*; public class WindowClosingAdapter extends WindowAdapter { public void windowclosing(windowevent event) { event.getwindow().setvisible(false); event.getwindow().dispose(); System.out.println("Das Fenster wurde geschlossen!"); } } Frame wnd = new Frame(); wnd.addwindowlistener(new WindowClosingAdapter()); wnd.setsize(400,300); wnd.setvisible(true); 11.1 Grundlagen 11-13

14 Adapter-Klassen Eine Adapter-Klasse ist eine Klasse, die eine gegebene Schnittstelle implementiert, indem sie jede abstrakte Methode durch einen leeren Rumpf realisiert. Adapter-Klassen werden verwendet, wenn von einer Schnittstelle lediglich ein Teil der Methoden benötigt wird, der Rest aber uninteressant ist. In diesem Fall leitet man eine neue Klasse aus der Adapter-Klasse ab und überlagert nur die erforderlichen Methoden. Beispiel: Die Klasse WindowAdapter implementiert die Schnittstellen WindowListener, WindowStateListener und WindowFocusListener durch leere Rümpfe. Hierbei handelt es sich um die folgenden Methoden: 11.1 Grundlagen 11-14

15 Die Klasse WindowAdapter void windowactivated(windowevent e) void windowclosed(windowevent e) void windowclosing(windowevent e) void windowdeactivated(windowevent e) void windowdeiconified(windowevent e) void windowgainedfocus(windowevent e) void windowiconified(windowevent e) void windowlostfocus(windowevent e) void windowopened(windowevent e) void windowstatechanged(windowevent e) 11.1 Grundlagen 11-15

16 Ein einführendes Beispiel Wir fassen zusammen: import java.awt.*; import java.awt.event.*; class WindowClosingAdapter extends WindowAdapter { public void windowclosing(windowevent event) { event.getwindow().setvisible(false); event.getwindow().dispose(); System.out.println("Das Fenster wurde geschlossen!"); } } 11.1 Grundlagen 11-16

17 class Rechteck extends Canvas { } public void paint(graphics g) { g.setcolor(color.red); g.fillrect(20,20,100,40); g.setcolor(color.black); g.drawstring("ein rotes Rechteck",20,80); setlocation(20,15); } 11.1 Grundlagen 11-17

18 public class EinfachesFenster extends Frame { } EinfachesFenster(String title) { super(title); addwindowlistener(new WindowClosingAdapter()); setbackground(color.yellow); setsize(400,200); add(new Rechteck()); setvisible(true); } 11.1 Grundlagen 11-18

19 EinfachesFenster e1 = new EinfachesFenster("Erstes Fenster"), e2 = new EinfachesFenster("Zweites Fenster"), e3 = new EinfachesFenster("Drittes Fenster"); e1.setlocation(200,200); e2.setlocation(400,300); e3.setlocation(600,400); 11.1 Grundlagen 11-19

20 Grafikprogrammierung in Java: Grafische Grundelemente 11.1 Grundlagen 11.2 Grafische Grundelemente 11.3 Fensterklassen 11.4 Ereignisse und Widgets 11.5 Applets 11.6 Die Swing-Klassen 11.2 Grafische Grundelemente 11-20

21 Das grafische Koordinatensystem Die Ausgabe von grafischen Objekten basiert auf einem zweidimensionalen Koordinatensystem, dessen Ursprung (0,0) in der linken oberen Ecke liegt. x y Positive x-werte erstrecken sich nach rechts, positive y-werte nach unten. Die Maßeinheit entspricht einem Bildschirmpixel und ist somit geräteabhängig Grafische Grundelemente 11-21

22 Der Benutzerbereich Es steht nicht das gesamte Fenster für Ausgaben zur Verfügung. Oben, unten, links und rechts wird Platz zur Ausgabe von Rahmen und Titelzeile benötigt. Mit getsize().width und getsize().height kann die Gesamtbreite bzw. -höhe eines Fensters ermittelt werden. Durch getinsets().left, getinsets().right, getinsets().top und getinsets().bottom lässt sich die Abmessung des Rahmens und durch Differenzbildung die des Benutzerbereichs (client area) bestimmen Grafische Grundelemente 11-22

23 Elementare Grafikroutinen (Auswahl) void drawstring(string s, int x, int y) drawstring schreibt den String s an die Position (x,y). Diese Koordinaten stellen das linke Ende der Basislinie von s dar. void drawchars(char[] c, int offset, int length, int x, int y) Diese Methode schreibt ein Zeichenfeld. Die Parameter offset und length können zur Angabe des ersten Zeichens und der Anzahl der auszugebenden Zeichen verwendet werden Grafische Grundelemente 11-23

24 Beispiel: Die Anweisungen Elementare Grafikroutinen (Auswahl) char[] c = { a, b, c, d, e, f }; g.drawstring("zeichenkette",50,50); g.drawchars(c,1,4,50,150); schreiben den String "Zeichenkette" an die Position (50,50) und darunter die Zeichen "bcde" an die Position (50,150) Grafische Grundelemente 11-24

25 Elementare Grafikroutinen (Auswahl) void drawline(int x1, int y1, int x2, int y2) Diese Methode zieht eine Linie von der Position (x1,y1) zur Position (x2,y2). void drawrect(int x, int y, int width, int height) drawrect zeichnet ein Rechteck der Breite width und der Höhe height, dessen linke obere Ecke an der Position (x,y) liegt. void drawroundrect(int x, int y, int width, int height, int arcwidth, int archeight) Es wird ein Rechteck mit abgerundeten Ecken gezeichnet. arcwidth und archeight bestimmen die Halbachsen der Ellipse, die zur Darstellung der Ecken verwendet wird Grafische Grundelemente 11-25

26 Elementare Grafikroutinen (Auswahl) void drawpolygon(int[] x, int[] y, int anzahl) Diese Methode zeichnet einen Linienzug. Die x-koordinaten der Punkte werden dem ersten Parameter, die y-koordinaten dem zweiten Parameter entnommen. Die Anzahl der Koordinatenpaare wird durch den dritten Parameter festgelegt. Der Polygonzug wird geschlossen. Durch drawpolyline kann ein nichtgeschlossener Linienzug dargestellt werden. Eine andere Möglichkeit, ein Polygon zu erzeugen, besteht darin, einen Konstruktor der Klasse Polygon aufzurufen: Polygon(int[] x, int[] y, int anzahl) Polygon() Durch addpoint kann ein Polygon erweitert werden Grafische Grundelemente 11-26

27 Elementare Grafikroutinen (Auswahl) void drawoval(int x, int y, int width, int height) Mit dieser Methode können Kreise und Ellipsen gezeichnet werden. Die Parameter spezifizieren ein Rechteck wie in der Methode drawrect. Es wird die größte Ellipse gezeichnet, die in dieses Rechteck hineinpasst. void drawarc(int x, int y, int width, int height, int startangle, int arcangle) Mit drawarc kann ein Kreisbogen dargestellt werden. Die ersten vier Parameter geben den Kreis, startangle den Anfangswinkel und arcangle den Winkel an Grafische Grundelemente 11-27

28 Elementare Grafikroutinen (Auswahl) Die folgenden Funktionen stellen die gleichen geometrischen Objekte dar wie die obigen, zeichnen aber nicht nur deren Umrisse, sondern füllen auch ihre Fläche aus. void fillrect(... ) void fillroundrect(... ) void fillpolygon(... ) void filloval(... ) void fillarc(... ) 11.2 Grafische Grundelemente 11-28

29 Elementare Grafikroutinen (Auswahl) void clearrect(int x, int y, int width, int height) Die Methode clearrect überschreibt das angegebene Rechteck mit der aktuellen Hintergrundfarbe. void copyarea(int x, int y, int width, int height, int dx, int dy) copyarea kopiert das ausgewählte Rechteck an die Position (x + dx, y + dy). Mit einer Clipping-Region kann die Ausgabe auf einen bestimmten Bereich eingeschränkt werden Grafische Grundelemente 11-29

30 Schriftarten Ohne zusätzliche Anweisungen wird Text in einem systemabhängigen Standard-Font ausgegeben. Um einen anderen Font zur Textausgabe zu verwenden, muss zuerst ein Font-Objekt erzeugt und dann in den Grafik-Kontext eingetragen werden. Ein Font-Objekt kann mit einem Konstruktor der Klasse Font erzeugt werden: Font(String name, int style, int size) Mit void setfont(font font) und Font getfont() kann der Font gesetzt bzw. abgefragt werden Grafische Grundelemente 11-30

31 Schriftarten Der Parameter name gibt den Namen der gewünschten Schrift an. Font-Namen sind beispielsweise Times New Roman, Helvetica oder Courier. Schriften können Serifen besitzen oder auch serifenlos sein. Ein weiteres Kennzeichen einer Schrift ist die Zeichenbreite. Diese kann variabel oder konstant sein. Bei konstanter Zeichenbreite bezeichnet man eine Schrift als monospaced. Beispiel: Der Font, in dem diese Folien geschrieben wurden, ist die serifenlose Variante der Latin Computer Modern. Es können auch die Font-Namen Serif, SansSerif und Monospaced verwendet werden. Sie werden auf entsprechende Fonts abgebildet Grafische Grundelemente 11-31

32 Schriftarten Der Parameter size gibt die Schriftgröße an. Übliche Schriftgrößen für Text liegen zwischen 10 pt und 12 pt. Die Schriftart wird durch den Parameter style beschrieben: Name Wert Bedeutung Font.PLAIN 0 Standard-Font Font.BOLD 1 Fettdruck Font.ITALIC 2 Kursivdruck 3 fetter Kursivdruck 11.2 Grafische Grundelemente 11-32

33 Schriftarten Beispiel: Die folgenden Anweisungen bewirken, dass der String "Zeichenkette" in einer Schrift mit konstanter Zeichenbreite in fettem Kursivdruck in 12-Punkt-Schrift an die Position (50,350) geschrieben wird: Font f = new Font("Monospaced",3,12); g.setfont(f); g.drawstring("zeichenkette",50,350); 11.2 Grafische Grundelemente 11-33

34 Schriftarten Das folgende Beispiel gibt die drei Standardschriften in 36 Punkt aus: public void paint(graphics g) { } Font font; String[] arfonts = {"Serif","SansSerif","Monospaced"}; for (int i = 0; i < arfonts.length; ++i) { font = new Font(arfonts[i],Font.PLAIN,36); g.setfont(font); g.drawstring(arfonts[i],10,30 + (i + 1) * (36 + 5)); } 11.2 Grafische Grundelemente 11-34

35 Schriftarten Die Klasse Font besitzt Methoden, um Informationen über den aktuellen Font zu gewinnen: String getfamily() int getstyle() int getsize() Die Klasse FontMetrics stellt Methoden zur Verfügung, mit denen die Größenmaßzahlen einzelner Zeichen wie Oberlänge, Unterlänge oder Breite, Größen wie der Zeilenabstand oder die Länge eines Strings ermittelt werden können. int charwidth(char ch) int stringwidth(string str) 11.2 Grafische Grundelemente 11-35

36 Farbmodell Eine Möglichkeit, in Java Farben zu benutzen, basiert auf dem RGB-Farbmodell (Rot-Grün-Blau-Farbmodell). Jede dieser drei Grundfarben wird durch 8 Bits dargestellt. Der Anteil einer Grundfarbe kann also durch eine Dezimalzahl zwischen 0 und 255 beschrieben werden. Für die gesamte Farbtiefe ergeben sich somit 24 Bits. Farbe Rot Grün Blau Weiß Grau Schwarz Rot Grün Blau Gelb Magenta Cyan Java unterstützt weitere Farbmodelle, in denen Farben z. B. durch Farbton, Intensität und Helligkeit dargestellt werden Grafische Grundelemente 11-36

37 Erzeugung von Farben Farben werden durch die Klasse Color dargestellt. Jedes Objekt repräsentiert eine Farbe, die durch ihren RGB-Wert eindeutig gekennzeichnet ist. Konstruktoren: Color(int r, int g, int b) Color(float r, float g, float b) Der erste Konstruktor erwartet ganzzahlige Werte im Bereich von 0 bis 255, der zweite Fließkommazahlen zwischen 0.0 und 1.0. Der Wert 0.0 entspricht der ganzzahligen 0, der Wert 1.0 der ganzzahligen Grafische Grundelemente 11-37

38 Erzeugung von Farben Die Klasse Color stellt etliche Farben als statische Objekte zur Verfügung: static Color black static Color red static Color green static Color blue... Von einem bestehenden Farbobjekt kann der RGB-Wert mit den Methoden int getred(), int getgreen() und int getblue() ermittelt werden Grafische Grundelemente 11-38

39 Verwendung von Farben Um Farben bei der Ausgabe von Schrift oder Grafik zu verwenden, muss ein Objekt der Klasse Color erzeugt und mithilfe der Methode void setcolor(color c) dem grafischen Kontext zugewiesen werden. Die Ausgabe erfolgt solange in der neuen Farbe, bis dem Kontext eine neue Farbe zugeordnet wird. Mit Color getcolor() wird die aktuelle Farbe abgefragt Grafische Grundelemente 11-39

40 Verwendung von Farben Beispiel: public void paint(graphics g) { g.setcolor(color.red); g.drawstring("zeichenkette",200,500); g.setcolor(new Color(200,200,0)); g.drawoval(50,400,60,160);... } 11.2 Grafische Grundelemente 11-40

41 Die Klasse SystemColor Die Klasse SystemColor stellt eine Reihe von Farben zur Verfügung, die den Farben des Desktops entsprechen. Damit können Anwendungen entwickelt werden, die im Aussehen an die Betriebssystemumgebung angepasst sind. Beispiele: SystemColor.desktop Hintergrundfarbe des Desktops SystemColor.window Hintergrundfarbe für Fenster SystemColor.text Hintergrundfarbe für Text 11.2 Grafische Grundelemente 11-41

42 Grafikprogrammierung in Java: Fensterklassen 11.1 Grundlagen 11.2 Grafische Grundelemente 11.3 Fensterklassen 11.4 Ereignisse und Widgets 11.5 Applets 11.6 Die Swing-Klassen 11.3 Fensterklassen 11-42

43 Fensterklassen Das AWT enthält eine Reihe von Fensterklassen, die über eine Vererbungslinie miteinander verbunden sind. An der Spitze steht die Klasse Component: Component Container Panel - Applet Window - Frame - Dialog FileDialog Button Canvas Checkbox Choice Label List Scrollbar Textcomponent 11.3 Fensterklassen 11-43

44 Fensterklassen Component ist eine abstrakte Klasse, deren Objekte Programmelemente darstellen, die eine Größe und eine Position besitzen und die Ereignisse senden und auf Ereignisse reagieren können. Container ist eine konkrete Klasse. Sie erlaubt es, innerhalb einer Komponente weitere Komponenten aufzunehmen. Container stellt Methoden, um Komponenten hinzuzufügen oder zu entfernen, bereit. Mit den LayoutManager-Klassen werden die Komponenten positioniert. LayoutManager, LayoutManager2 sind Interfaces. Implementierende Klassen sind beispielsweise BorderLayout, FlowLayout, GridLayout, Fensterklassen 11-44

45 Fensterklassen Panel ist die einfachste konkrete Klasse mit den Eigenschaften von Component und Container. Applet ist eine direkte Unterklasse von Panel. Ein Applet besitzt also die Fähigkeiten der Klassen Component und Container. Diese Klasse spielt eine entscheidende Rolle in der Entwicklung von Applets. Die Klasse Window abstrahiert ein Top-Level-Window ohne Rahmen, Titelleiste und Menü. Sie ist für Anwendungen geeignet, die die Kontrolle über das gesamte Fenster benötigen. Frame repräsentiert ein Top-Level-Window mit Rahmen, Titelleiste und optionalem Menü. Einem Frame kann ein Icon zugeordnet werden, das angezeigt wird, wenn ein Fenster minimiert wird Fensterklassen 11-45

46 Aufrufen und Schließen eines Fensters Um ein Fenster auf dem Bildschirm anzuzeigen, muss zunächst eine geeignete Fensterklasse instanziiert werden. Dafür kommen Klassen wie Window, Frame, Dialog, Applet und FileDialog in Frage. Die Klassen haben unterschiedliche Konstruktoren. Nach der Instanziierung wird die Methode setvisible(boolean visible) aufgerufen, um das Fenster anzuzeigen. Wird true übergeben, wird das Fenster angezeigt, andernfalls geschlossen. Um ein Fenster zu schließen, sind die Methoden setvisible(false) und dispose() aufzurufen Fensterklassen 11-46

47 Eigenschaften eines Fensters Größe und Position, geerbt von Component Aktivierungskomponente, geerbt von Component Fensterelemente Titelleiste, Menü, Icon, Mauscursor, Standardfont, Vorder- und Hintergrundfarbe Die Eigenschaften eines Fensters können mithilfe spezieller Methoden gesetzt und abgefragt werden. Beispiel: Objekte der Klasse Frame besitzen einen Rahmen, eine Titelleiste und optional ein Menü, Objekte der Klasse Window hingegen nicht Fensterklassen 11-47

48 Grafikprogrammierung in Java: Ereignisse und Widgets 11.1 Grundlagen 11.2 Grafische Grundelemente 11.3 Fensterklassen 11.4 Ereignisse und Widgets 11.5 Applets 11.6 Die Swing-Klassen 11.4 Ereignisse und Widgets 11-48

49 Ereignisgesteuerte Programmierung Ereignisse sind beispielsweise das Drücken einer Taste, die Betätigung des Rollbalkens oder die Bewegung der Maus. Jedes Ereignis besitzt eine Quelle (Source). Ein Ereignis kann von Beobachtern (Listener) wahrgenommen werden. Die Anmeldung von Beobachtern zur Benachrichtigung vom Eintreten eines Ereignisses ist frei programmierbar und muss immer explizit erfolgen. Es ist nicht festgelegt, in welcher Reihenfolge die Beobachter vom Eintreten eines Ereignisses informiert werden. Sichergestellt ist lediglich, dass jeder Beobachter eine Kopie des ursprünglichen Ereignisses erhält Ereignisse und Widgets 11-49

50 Ereignisgesteuerte Programmierung Bei der Verbreitung von Ereignissen ist zwischen den Modi single-cast und multi-cast zu unterscheiden. Für Single-Cast-Ereignisse wird der Beobachter mit einer setxxlistener-methode gesetzt, für Multi-Cast-Ereignisse wird ein Beobachter mit einer addxxlistener-methode der Menge der Beobachter hinzugefügt. Eine Adapter-Klasse ist eine Klasse, die eine gegebene Schnittstelle implementiert, indem sie jede abstrakte Methode durch einen leeren Rumpf realisiert. Adapter-Klassen werden verwendet, wenn von einer Schnittstelle lediglich ein Teil der Methoden benötigt wird, der Rest aber uninteressant ist. In diesem Fall leitet man eine neue Klasse aus der Adapter-Klasse ab und überlagert nur die erforderlichen Methoden Ereignisse und Widgets 11-50

51 Ereignisklassen EventObject AWTEvent ComponentEvent - FocusEvent - InputEvent - KeyEvent - MouseEvent - ContainerEvent - WindowEvent ActionEvent AdjustmentEvent ItemEvent TextEvent 11.4 Ereignisse und Widgets 11-51

52 EventListener-Schnittstellen EventListener FocusListener ActionListener AdjustmentListener ItemListener TextListener KeyListener MouseListener MouseMotionListener WindowListener ContainerListener ComponentListener 11.4 Ereignisse und Widgets 11-52

53 Low-Level-Events Beispiel: Window-Events windowopened windowactivated, windowdeactivated windowclosed windowclosing windowiconified, windowdeiconified 11.4 Ereignisse und Widgets 11-53

54 Widgets Fensterelemente mit Ein- und/oder Ausgabefunktionalität werden als Widgets (window gadgets) bezeichnet. Die Anordnung der Widgets in einem Fenster wird durch den Layout-Manager durchgeführt. Widgets sind beispielsweise: Label Rollbalken Schaltflächen (buttons) Checkboxen und Checkboxgruppen (radio buttons) 11.4 Ereignisse und Widgets 11-54

55 Widgets Textfelder und Textbereiche Auswahlboxen Listen Canvas Panels Dateidialogboxen (nicht für Applets) Menüs (nicht für Applets) 11.4 Ereignisse und Widgets 11-55

56 Schritte zur Realisierung eines Widgets Schnittstelle angeben Widget deklarieren und initialisieren Widget dem Layout hinzufügen Beobachter registrieren Ereignis behandeln Man beachte, dass mehrere Widgettypen dieselbe Ereignisklasse verwenden, z. B. benutzen Schaltflächen und Textfelder die Klasse ActionListener Ereignisse und Widgets 11-56

57 Beispiel: Rollbalken Als erstes Beispiel betrachten wir jetzt die Programmierung eines Rollbalkens. import java.awt.*; import java.awt.event.*; public class WindowBlind extends Frame implements AdjustmentListener { private Scrollbar schieber; private int schieberwert; 11.4 Ereignisse und Widgets 11-57

58 public WindowBlind() { setlayout(new FlowLayout()); setbackground(color.white); schieber = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,101); add(schieber); addwindowlistener(new WindowClosingAdapter()); schieber.addadjustmentlistener(this); } 11.4 Ereignisse und Widgets 11-58

59 public void paint(graphics g) { g.drawstring("rollbalkenwert ist " + schieberwert,120,200); g.setcolor(color.red); g.drawrect(40,80,60,100); g.fillrect(40,80,60,schieberwert); g.setcolor(color.blue); g.drawrect(120,80,60,100); g.fillrect(120,80 + schieberwert,60,100 - schieberwert); g.setcolor(color.green); g.drawrect(200,80,60,100); g.fillrect(200,80,60,100 - schieberwert); } 11.4 Ereignisse und Widgets 11-59

60 public void adjustmentvaluechanged(adjustmentevent e) { schieberwert = schieber.getvalue(); repaint(); } 11.4 Ereignisse und Widgets 11-60

61 public static void main(string[] args) { WindowBlind f = new WindowBlind(); f.setsize(400,300); f.setvisible(true); } } 11.4 Ereignisse und Widgets 11-61

62 Beispiel: Label und Button... implements ActionListener { private Label title; private Button knopf1, knopf2; private int anzahl = 0; public Konstruktor() { setlayout(new FlowLayout()); title = new Label("Zählknopf:"); knopf1 = new Button("Drück mich!"); knopf2 = new Button("Ende"); add(title); add(knopf1); add(knopf2); knopf1.addactionlistener(this); knopf2.addactionlistener(this); } 11.4 Ereignisse und Widgets 11-62

63 public void paint(graphics g) { g.drawstring("der Knopf wurde " + anzahl + " mal gedrückt.",10,80); } public void actionperformed(actionevent event) { anzahl++; if (event.getsource() == knopf2) System.exit(0); repaint(); } } 11.4 Ereignisse und Widgets 11-63

64 AbstractButton Die abstrakte Klasse AbstractButton ist eine Unterklasse der Klasse JComponent (s. Abschnitt Swing-Klassen). Die abstrakte Klasse AbstractButton enthält die Methode void doclick() durch die in Implementierungen dieser Klasse ein Klick programmatisch ausgeführt werden kann. Beispiele für Unterklassen von AbstractButton sind die Klassen JButton, JToggleButton und JMenuItem Ereignisse und Widgets 11-64

65 Weitere Widgets Textfield: ActionListener, addactionlistener void actionperformed(actionevent event) Checkbox, Checkboxgroup: ItemListener, additemlistener void itemstatechanged(itemevent event) Choice: ItemListener, additem, additemlistener void itemstatechanged(itemevent event) 11.4 Ereignisse und Widgets 11-65

66 Grafikprogrammierung in Java: Applets 11.1 Grundlagen 11.2 Grafische Grundelemente 11.3 Fensterklassen 11.4 Ereignisse und Widgets 11.5 Applets 11.6 Die Swing-Klassen 11.5 Applets 11-66

67 Anwendungen (Applikationen) Anwendungen und Applets Anwendungen bilden eigenständige Programme. Zur Ausführung benötigen sie nur den Java-Interpreter und die.class-dateien der beteiligten Klassen. Jede Klasse, die die Methode public static void main enthält, kann als Anwendung benutzt werden. Applets (little applications) Applets sind kleine Programme, die in eine Html-Seite eingebettet sind und nur innerhalb eines Web-Browsers oder eines Applet-Viewers ausgeführt werden können. Applets werden nicht durch die Methode main gestartet, sondern müssen aus der Klasse Applet abgeleitet und entsprechend konstruiert werden Applets 11-67

68 import java.awt.*; import java.applet.*; Ein kleines Applet: Java-Datei public class MinimalApplet extends Applet { } public void paint(graphics g) { g.drawstring("test-ausgabe",0,20); } 11.5 Applets 11-68

69 Ein kleines Applet: Html-Seite <html> <head> <title>applet-test</title> </head> <body> <applet code="minimalapplet" width=600 height=800> Hier steht das Applet.</applet> </body> </html> 11.5 Applets 11-69

70 Anwendungen und Applets Ein Applet wird immer aus der Klasse Applet abgeleitet. Bei einer Anwendung ist es dagegen gleichgültig, woraus die Hauptklasse abgeleitet wird. Eine Anwendung wird gestartet, indem vom Java-Interpreter die Methode main aufgerufen wird. Das Starten eines Applets wird dadurch erreicht, dass der Browser oder der Applet-Viewer die Applet-Klasse instanziiert und die Methoden init und start aufruft. Aus Gründen der Sicherheit darf ein Applet in der Regel weder auf Dateien des lokalen Rechners zugreifen noch externe Programme auf dem Rechner starten Applets 11-70

71 Anwendungen und Applets Ein Applet arbeitet immer ereignisorientiert. Im Gegensatz dazu kann eine Anwendung auf die Behandlung von Ereignissen verzichten und alle Ein- und Ausgaben textbasiert durchführen. Im Vergleich zu Anwendungen bieten Applets einige zusätzliche Möglichkeiten Applets 11-71

72 Die Klasse Applet Die Klasse Applet steht in der Vererbungshierarchie unter der Klasse Component und Container. Sie besitzt damit deren Eigenschaften. Component Container Panel - Applet Bezüglich der Reaktion auf Ereignisse und die Registrierung und Programmierung von Listener-Klassen verhält sich ein Applet wie jedes andere Fenster Applets 11-72

73 init(): Initialisierung eines Applets start(): Start eines Applets stop(): Stopp eines Applets, z. B. beim Laden einer anderen Seite. Methoden start und stop können mehrfach während der Lebensdauer eines Applets aufgerufen werden. paint(graphics g): Methode zum Zeichnen destroy(): Beenden eines Applets 11.5 Applets 11-73

74 Beispiel: Rollbalken Als Beispiel schreiben wir das Rollbalkenprogramm als Applet. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class WindowBlind extends Applet implements AdjustmentListener { private Scrollbar schieber; private int schieberwert; 11.5 Applets 11-74

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

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

NTB Druckdatum: 01.04.13 -

NTB Druckdatum: 01.04.13 - AWT UND SWING AWT = abstract windowing toolkit Bausteine Eigenes Fenster Programmcode steht nicht im Main, sondern in einer separaten Klasse extends JFrame JWindow selbstständiges Fenster, ohne Rahmen

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 21.05.2008 2 Was ist ein(e) GUI? GUI = Graphical User Interface = Graphische

Mehr

Swing Lernen am Code Teil 1

Swing Lernen am Code Teil 1 Swing Lernen am Code Teil 1 Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster

Mehr

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

Swing :Komponenten I (Teil 2)

Swing :Komponenten I (Teil 2) l Bei Swing handelt es sich um eine Programmierschnittstelle und Grafikbibliothek zum Programmieren von grafischen Benutzeroberflächen l Swing stellt eine Menge von Klassen zur Verfügung l Swing wurde

Mehr

Programmieren mit Swing

Programmieren mit Swing Jürgen Schlierf Rudolf Weber Programmieren mit Swing Einfuhrung in die Programmierung mit den Swing-Klassen in Java 2 HANSER Carl Hanser Verlag München Wien Inhaltsverzeichnis 1 Einleitung 1 1.1 Von Java

Mehr

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: graphical user interface, GUI) in Java GUI-Programmierung in Java GUI-Programmierung in Java 2002 Prof. Dr. Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen

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

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,

Mehr

...erinnern Sie sich? oopjs4b / kwhbkd4r

...erinnern Sie sich? oopjs4b / kwhbkd4r ...erinnern Sie sich? oopjs4b / kwhbkd4r !" Ereignisbehandlung in awt/swing führt Liste interessierter Behandler GUI- Komponente (z.b. Knopf) wird eingetragen trägt ein Ereigniskanal fertigt ab neuer Behandler

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java I Vorlesung 11 Graphische Oberflächen mit Swing Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java

Mehr

Swing Grundlagen. Andre Eichmann

Swing Grundlagen. Andre Eichmann Swing Grundlagen Andre Eichmann Inhaltsverzeichnis Swing: Grundlagen - Einleitung - Ein einleitendes Beispiel Swing: Container und Menüs - Hauptfenster - Menüs Swing: Grundlagen Nachteile von AWT: - Schwierig,

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

Einführung in Swing. Graphical User Interface

Einführung in Swing. Graphical User Interface Einführung in Swing Ho Ngoc Duc IFIS - Universität zu Lübeck Graphical User Interface Ein GUI-Programm beinhaltet: Graphische Darstellung der Anwendungsdaten und Interaktionsmöglichkeiten in Fenstern Steuerung

Mehr

Programmieren 2 Selbststudium Semesterwoche 4

Programmieren 2 Selbststudium Semesterwoche 4 Programmieren 2 Selbststudium Semesterwoche 4 Kapitel 11.1, 11.2 und 11.3 1. Das Konzept "Interface" ist wichtig und ist uns schon mehrfach begegnet. In welchen Zusammenhängen hatten wir es schon mit "Interfaces"

Mehr

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2009 1 / 30 2 / 30 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale

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

GRAFISCHE BENUTZERSCHNITTSTELLEN

GRAFISCHE BENUTZERSCHNITTSTELLEN Vorlesung 4.4 GRAFISCHE BENUTZERSCHNITTSTELLEN Dr. Philip Mayer # 1 GUIs Grafische Benutzerschnittstellen (GUIs, Graphical User Interfaces) bieten dem Benutzer Zugriff auf ein Anwendungssystem GUIs sind

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

14 Swing-Komponenten. 2009 2014, Prof. Dr. D. Ratz

14 Swing-Komponenten. 2009 2014, Prof. Dr. D. Ratz 14 Swing-Komponenten 2009 2014, Prof. Dr. D. Ratz 14.1 Typische Komponenten für Benutzerschnittstellen Das Abstract Window Toolkit (AWT) liefert bereits viele Möglichkeiten für Komponenten für graphische

Mehr

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

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Toolbar 1. JToolBar 2. Menü 1. JMenuBar 2. JMenu 3. JMenuItem 4. KeyStroke 5. Beispiel JMenuDemo1 6. JCheckBoxMenuItem 7. JRadioButtonMenuItem 8. Beispiel JMenuDemo2 9. JPopupMenu 10. Beispiel

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 07. Java: GUI und Ereignisbehandlung Teil

Mehr

J.1. J.1 GUI-Programmierung in in Java. 2002 Prof. Dr. Rainer Manthey Informatik II 1

J.1. J.1 GUI-Programmierung in in Java. 2002 Prof. Dr. Rainer Manthey Informatik II 1 GUI-Programmierung in Java GUI-Programmierung in in Java 2002 Prof Dr Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: : Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen

Mehr

Kurs OPR. Objektorientierte Programmierung

Kurs OPR. Objektorientierte Programmierung Kurs OPR Objektorientierte Programmierung Lektion: 008-GUI-Komp., eigenst. Programme Zürcher Hochschule für Angewandte Wissenschaften Mitglied der Fachhochschule Zürich Version 1.4 Inhaltsverzeichnis 1

Mehr

Fenster in Java. von Stefanie Gerckens 1

Fenster in Java. von Stefanie Gerckens 1 Fenster in Java von Stefanie Gerckens 1 Inhaltsverzeichnis Die verschiedenen Fensterklassen Aufrufen und Schließen eines Fensters Visuelle Eigenschaften eines Fensters Anzeigezustand eines Fensters Fensterelemente

Mehr

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java Vorlesung Programmieren GUIs mit Java Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Bisher... 2 Apple Lisa Office System 3.1 3 Graphical

Mehr

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster by Ali Bastan Gliederung Grundlagen von Swing 1. Kurze Einleitung 2. Warum Swing, wenn es das AWT gibt? 3. Was ist Swing? 4. Merkmale von Swing 5.

Mehr

Auszug aus der Klassenstruktur

Auszug aus der Klassenstruktur Swing javax.swing Auszug aus der Klassenstruktur JComponent AbstractButton JColorChooser JComboBox JInternalFrame JLabel JList JPanel JTable JTextComponent JTree JToolBar JToolTip JToggleButton JButton

Mehr

GUI-Programmierung in Java

GUI-Programmierung in Java GUI-Programmierung in Java Jan Pihl, Daniel Bugdalle 1. Einleitung Betreuer: Thomas Ströder Die Bedienung von Software stellt sich oft als etwas schwierig für viele Nutzer heraus, wenn es keine grafische

Mehr

JAVA Oberflächen mit Swing

JAVA Oberflächen mit Swing JAVA Oberflächen mit Swing Grafik von http://javafx.com 168 168 AGENDA Grundlagen GUI Swing JavaFX 169 169 GRAPHISCHE BENUTZEROBERFLÄCHEN (1) AWT = Abstract Window Toolkit Verwendet die jeweiligen GUI-Komponenten

Mehr

2. Visualisierung von mathematischen Objekten und Prozessen

2. Visualisierung von mathematischen Objekten und Prozessen Quelle: Mathematik und Java, Teil 2 Visualisierung von mathematischen Objekten und Prozessen 1. Übersicht Package java.applet Burkhard Wolf, Gerd Bohlender 2. Übersicht Package java.awt Abstract W indow

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:

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

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben Hochschule der Medien Prof Uwe Schulz 14 Juli 2010 Klausur Informatik, EDV-Nr 40301 Seite 1 von 5 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: alle außer tragbare Computer und Nachbar Bearbeitungszeit:

Mehr

GUI. Programmiermethodik. Eva Zangerle Universität Innsbruck

GUI. Programmiermethodik. Eva Zangerle Universität Innsbruck GUI Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Interaktive Elemente, GUI-Programmierung

Interaktive Elemente, GUI-Programmierung Softwaretechnik für IM, WS2015/2016 http://knopper.net/bw/swt/ Übung 4 Interaktive Elemente, GUI-Programmierung 1. Schreiben Sie ein Programm (wahlweise als Applet oder Applikation, oder beides), das die

Mehr

Packages. Man kann mehrere Klassen in eine package zusammenfassen.

Packages. Man kann mehrere Klassen in eine package zusammenfassen. Packages Man kann mehrere Klassen in eine package zusammenfassen. Diese müssen dann in einem Unterverzeichnis liegen, dessen Name der Packagename ist. Jede Datei der Package muss mit package ; beginnen,

Mehr

Objektorientierte Softwareentwicklung

Objektorientierte Softwareentwicklung Objektorientierte Softwareentwicklung Exkurs GUI-Programmierung mit Java-SWING Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Für Hinweise und konstruktive Kritik

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract

Mehr

Ausgewählte Implementierungsprobleme

Ausgewählte Implementierungsprobleme Ausgewählte Implementierungsprobleme Rebecca Tiarks 15. Januar 2009 1 / 56 Inhaltsverzeichnis 1 2 / 56 AWT grafische Benutzeroberfläche (GUI) erste API von Sun AWT bietet GUI-Komponenten, Operationen zum

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 12 Grafische Benutzerschnittstellen... 12-2 12.1 Komponenten... 12-2 12.1.1 AWT und Swing... 12-2 12.1.2 Beispiel Hallo Welt!... 12-3 12.2 Ereignisverarbeitung... 12-6 12.3 Grafik... 12-10 12.3.1

Mehr

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing Heinrich Hußmann Ludwig-Maximilians-Universität München Sommersemester 2003 Ludwig-Maximilians-Universität München Prof. Hußmann

Mehr

Einbindung der Tastatur

Einbindung der Tastatur Einbindung der Tastatur Auch die Tastatur kann man wie die Maus zur interaktiven Programmsteuerung verwenden. Bei der Maus ist stets klar, welche grafische Komponente bei einem Klick oder einer Bewegung

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey Kap. 36 SWING: Menüs und weitere SWING-Container Seán Dempsey Grundlagen von Menüs Hauptklasse: JMenuBar SWING- Entsprechung der AWT-Menüklasse MenuBar JMenuBar Menüleiste (JMenuBar) enthält Menüs (JMenu)

Mehr

FENSTER ADNAN TUNAY 1

FENSTER ADNAN TUNAY 1 FENSTER ADNAN TUNAY 1 Inhaltsverzeichnis Fensterklassen (Hierarchie u. Bedeutung) Aufrufen u. Schließen eines Fensters Visuelle Eigenschaften des Fensters Anzeigezustand des Fensters Fensterelemente Fenstertitel

Mehr

GUIs in Java und ihre Programmierung

GUIs in Java und ihre Programmierung GUIs in Java und ihre Programmierung Einführung GUI = Graphical User Interface graphische Benutzerschnittstelle Java Tutorial java.sun.com/docs/books/tutorial/index.html Java Documentation (in Version

Mehr

Benutzeroberflächen. Java Teil 4

Benutzeroberflächen. Java Teil 4 Benutzeroberflächen Java Teil 4 Einleitung Eine grafische Benutzeroberfläche (Graphical User Interface) ermöglicht dem Benutzer die Interaktion mit dem Computer über grafische Symbole. Die GUI haben in

Mehr

Mensch-Maschine-Interaktion

Mensch-Maschine-Interaktion Universität Dortmund, Fachbereich Informatik Peter Bollweg, OH16 E08, bollweg@ls7.cs.uni-dortmund.de, 6328 Constantin Timm, OH16 E06, timm@ls12.cs.uni-dortmund.de, 6144 Christian Asche Dortmund, 19. Oktober

Mehr

Serie 3: Designbeschreibung Verantwortlich für Rose-Projekt und Designbeschreibungen Dang, Quoc Anh / Phan, Ngoc Diep / Xiongjie Ding

Serie 3: Designbeschreibung Verantwortlich für Rose-Projekt und Designbeschreibungen Dang, Quoc Anh / Phan, Ngoc Diep / Xiongjie Ding DESIGNBESCHREIBUNG. 1. Allgemeines.? GeoViewer ist eine menügesteuerte graphische Java-Applikation. VonGEO-Record wird die vordefinierte geometrische Konfiguration geladen, im GeoProver-Paket berechnet

Mehr

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane Hochschule Harz Programmierung2 Tutorial 04: FB Automatisierung und Informatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, JSplitPane und I/O Versuchsziele Kenntnisse

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 11 Prof. R. Westermann, R. Fraedrich,

Mehr

GUI-Programmierung mit Java-Swing

GUI-Programmierung mit Java-Swing GUI-Programmierung mit Java-Swing Michael Dienert 18. Oktober 2010 Inhaltsverzeichnis 1 Was ist Swing? 2 1.0.1 Ein sehr gutes Beispiel..................... 3 1.0.2 Eine sehr schnelle Alternative zu Swing............

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

Session 1: Classes and Applets

Session 1: Classes and Applets Session 1: Classes and Applets Literature Sprechen Sie Java, ISBN 3-89864-117-1, dpunkt deutsch Java für Studenten, ISBN 3-8273-7045-0, PearsonStudium deutsch Java in a Nutshell, ISBN: 0-59600-283-1, O'Reilly

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

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event. Lösungen 1. Aufgabe // ActionExample.java import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class ActionExample extends JFrame int counter = 1; JLabel counterlabel; public

Mehr

Programmierkurs. 11. Vorlesung. Sven Mallach. 13. Januar 2010. Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 60

Programmierkurs. 11. Vorlesung. Sven Mallach. 13. Januar 2010. Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 60 Programmierkurs 11. Vorlesung Sven Mallach Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 13. Januar 2010 1/ 60 Klausuren 1. Termin: Di. 23.02.2010 2. Termin: Do. 18.03.2010 Uhrzeit: In beiden

Mehr

Vorlesung 13. Sitzung Grundlegende Programmiertechniken

Vorlesung 13. Sitzung Grundlegende Programmiertechniken Vorlesung 13. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 GUI-Entwicklung mit

Mehr

Grafische Benutzeroberflächen mit Swing

Grafische Benutzeroberflächen mit Swing Grafische Benutzeroberflächen mit Swing KW 30, Zentralübung Informatik II 2006-07-24 Klausur: Stichpunkte 1. Auswertung System.out.println("abc" instanceof String); Ergebnis von instanceof ist ein boolean,

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;

Mehr

Appletprogrammierung

Appletprogrammierung Appletprogrammierung 362 Übersicht zum Vorlesungsinhalt zeitliche Abfolge und Inhalte können variieren Appletprogrammierung HTML Methoden eines Applets AppletViewer Applikation zu Applet Flackernde Applets

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

Drucken soll nur das Panel, nicht der ganze Rahmen gedruckt werden.

Drucken soll nur das Panel, nicht der ganze Rahmen gedruckt werden. Kapitel 1 Drucken von Swing-Komponenten. Wir wollen eine einfache Methode zum Drucken einer Swing-Komponente vorstellen und daran den Mechanismus der Druckereinbindung in JAVA studieren. Anschließen wird

Mehr

GUI Design. Universität Paderborn Prof. Dr. Stefan Böttcher. Java Swing und AWT

GUI Design. Universität Paderborn Prof. Dr. Stefan Böttcher. Java Swing und AWT GUI Design Java Swing und AWT 1 Gui Design Von Hand Mittels visuellem GUI Designer 2 Warum von Hand? Grundkonzepte erlernen Zum Verständnis des von GUI Designern generierten Codes unerlässlich GUI Designer

Mehr

AWT. Einfache AWT-Anwendung. Swing. Vorlesung 1. Handout S. 2. import java. awt. * ;

AWT. Einfache AWT-Anwendung. Swing. Vorlesung 1. Handout S. 2. import java. awt. * ; Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 56 Grafische Benutzeroberflächen Container Menüs JComponent JLabel/JTextField Buttons Events und Listener 2 / 56 Einführung:

Mehr

04 - Actions. Actions

04 - Actions. Actions Actions Motivation!In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt.!häufig werden gleiche Aktionen durch verschiedene Swing-Komponenten ausgelöst. Z.B. durch

Mehr

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

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.1. Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.1 Inhalt 1. Swing Komponenten 1. Klassenhierarchie 2. Beteiligte Packages 3. Schachtelungs-Hierarchie 4. Swing-Applikation als Klasse 2. Basis Komponente 1. JComponent 3. Text Komponenten 1. JLabel 2. JTextField

Mehr

Graphische Programmierung: GUIs: graphical user interfaces

Graphische Programmierung: GUIs: graphical user interfaces Graphische Programmierung: GUIs: graphical user interfaces Ziel: Java -Programmierung und Handhabung von graphischen Benutzeroberflächen (in Applets) mehrere Fenster Fenster-Eigenschaften: aktiv oder inaktiv

Mehr

Programmieren in Java

Programmieren in Java HOCHSCHULE MUENCHEN FAKULTÄT FÜR ELEKTROTECHNIK UND INFORMATIONSTECHNIK BEREICH DATENTECHNIK V JV 500 00 TH 02 Programmieren in Java Kapitel 5 5. Graphische Benutzeroberflächen 5.1. Grundprinzip 5.2. Java

Mehr

Klausur vom 14. Juni 2004. Informatik 4

Klausur vom 14. Juni 2004. Informatik 4 Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Kommunikationstechnik Labor für Technische Informatik, Burgdorf Klasse: EV02-1 Name, Vorname: Klausur vom 14. Juni

Mehr

Techniken der Projektentwicklung

Techniken der Projektentwicklung Einleitung Architektur Swing Beispiele Aufgabe Techniken der Projektentwicklung Swing Concepts Ingo Lütkebohle Termin 11 Ingo Lütkebohle Techniken der Projektentwicklung 1 Einleitung Architektur Swing

Mehr

Einführung in die Informatik - Teil 6b -

Einführung in die Informatik - Teil 6b - Eckart Modrow Java-Anwendungen mit dem JBuilder S. 1 Einführung in die Informatik - Teil 6b - Java-Anwendungen mit dem JBuilder Inhalt: 1. Anwendungen versus Applets 2. Die Arbeit mit IDEs 3. J++-Anwendungen

Mehr

Java Applikationen, Swing/JFC

Java Applikationen, Swing/JFC Java Applikationen, Swing/JFC Applets und Applikationen Kommandozeilen Anwendung Anwendungen mit GUI Swing/JFC Menus Weitere Komponenten Layouts Look & Feel Applets und Applikationen 2 von 70 Einführung

Mehr

GUI-Programmierung. Kapitel 2. 2.1 Der Window-Manager

GUI-Programmierung. Kapitel 2. 2.1 Der Window-Manager Kapitel 2 GUI-Programmierung Das erste Window-System wurde in den 70er Jahren von Xerox PARC entwickelt. Ende der 70er Jahre traten die grafischen Oberflächen mit den Apple Computern Lisa und Macintosh

Mehr

und mein Button JButton

und mein Button JButton und mein Button JButton 1 javax.swing Klassenbibliothek für Oberflächen weitestgehend selbst in Java programmiert sehr flexibel ziemlich langsam Layoutmanager und Eventhandling werden von awt übernommen

Mehr

SWING. DVG2-09 -Swing 1

SWING. DVG2-09 -Swing 1 SWING DVG2-09 -Swing 1 GUIs Swing stellt eine Menge von Klassen zur Verfügung, mit deren Hilfe man in Java portable GUIs programmieren kann. GUI: Graphical User Interface (Grafische Nutzer Schnittstelle)

Mehr

Softwarepraktikum: Enigma

Softwarepraktikum: Enigma Softwarepraktikum: Enigma Martin Steffen Sommersemester 2003 Abschnitt I GUI Inhalt: Übersicht gui-pakete in Java: AWT, Swing Komponenten und Behälter Layout Ereignisse und Ereignisbehandlung Ereignismodell

Mehr

Aufbau einer Swing-Applikation

Aufbau einer Swing-Applikation SWING GUIs Swing stellt eine Menge von Klassen zur Verfügung, mit deren Hilfe man in Java portable GUIs programmieren kann. GUI: Graphical User Interface (Grafische Nutzer Schnittstelle) GUIs sind grafische

Mehr

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

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer Applets Belebung von Webseiten Dipl.-Ing. Wolfgang Beer Was sind Applets? Java Klassen, die spezielle Richtlinien befolgen, um: "in Internet-Browsern lauffähig zu sein" Somit ist, komplexere Funktionalität,

Mehr

SWT. -The Standard Widget Toolkit- Inhaltsverzeichnis. Thomas Wilhelm SWT. 1. Was ist SWT?

SWT. -The Standard Widget Toolkit- Inhaltsverzeichnis. Thomas Wilhelm SWT. 1. Was ist SWT? Java -The Standard Widget Toolkit- Inhaltsverzeichnis 1. Was ist? - Vorteile von - Nachteile von 2. Vorbereitungen für 3. Das erste Programm in 4. Widgets und Styleparameter 5. - Layouts Was ist ein Widget?

Mehr

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker GUI-Programmierung mit Java PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik 15. April 2013 Übersicht GUI-Bibliotheken

Mehr

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

Klassen in Java. Klassen

Klassen in Java. Klassen Klassen in Java Klassen Klassen beschreiben Objekte, die abstakte oder konkrete Sachverhalte modellieren. Objekte sind durch einen Status gekennzeichnet (State). Der Status eines Objektes ergibt sich aus

Mehr

Kurs: Programmieren in Java

Kurs: Programmieren in Java Kurs: Programmieren in Java Tag 5 G R U N D L A G E N K I U N D S P I E L E - P R O G R A M M I E R U N G G R A F I K K O N Z E P T E B I L D V E R A R B E I T U N G M U S T E R E R K E N N U N G O B J

Mehr

von Anja Austermann Drag and Drop

von Anja Austermann Drag and Drop von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java

Mehr

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling Java Design und Event Handling Natascha Hoebel Professur Prof. R. V. Zicari AWT SWING Layout Design Event Handling Benutzerschnittstellen User Interfaces (UI) UI: GUI, WEB-Schnittstellen GUI: interaktive

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

Ein Manager mit CardLayout layout/cards.java

Ein Manager mit CardLayout layout/cards.java 201 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Ein Manager mit CardLayout layout/cards.java CardLayout dient vor allem zum Aufbau von Inspektoren: In der gleichen Fläche soll je nach

Mehr

Ereignisbehandlung 21

Ereignisbehandlung 21 Ereignisbehandlung 21 3 Ereignisbehandlung Dieses Kapitel beschäftigt sich mit der Ereignisbehandlung, d.h. der Reaktion eines Programms auf Eingaben durch benutzende Personen. Nach einigen ersten Beispielen

Mehr

GUI-Programmierung - Einführung

GUI-Programmierung - Einführung GUI-Programmierung - Einführung Kernkonzepte Komponenten (components) ereignisgesteuerte Programmierung (event driven programming) Layout 1 Frames and Components windows (frames) menus labels checkboxes

Mehr

Ansonsten VIEL SPAß! Nicholas Ohs (GK 11 IF 2)

Ansonsten VIEL SPAß! Nicholas Ohs (GK 11 IF 2) !!!ACHTUNG!!! Wenn jemand Rechtschreib- oder Grammatikfehler findet, kann er sie behalten. Ich habe diesen Text nicht Korrektur gelesen. Deshalb bitte: Inhaltliche Fehler MELDEN!!! Ansonsten VIEL SPAß!

Mehr

2. Programmierung von Benutzungsschnittstellen

2. Programmierung von Benutzungsschnittstellen 2. Programmierung von Benutzungsschnittstellen 2.1 Modell-Sicht-Paradigma 2.2 Bausteine für grafische Oberflächen 2.3 Ereignisgesteuerte Programme 1 Benutzungsoberflächen Technische Realisierungen: Stapelverarbeitungssprache

Mehr

In Track B generell gute Java-Kenntnisse vorausgesetzt!

In Track B generell gute Java-Kenntnisse vorausgesetzt! Gliederung Track A (Technik, montags): A1. Eingabe- und Ausgabetechnik bei Rechnersystemen A2. Technik der digitalen Bildverarbeitung A3. Technik der digitalen Tonverarbeitung A4. Technik der digitalen

Mehr

5. Das Java AWT (II) Components und Container

5. Das Java AWT (II) Components und Container 5. Das Java AWT (II) Components und Container OO-Graphics in Java Das Java AWT (II) 111 AWT Hierarchie (II) Checkbox Choice Object List Button Component Canvas Panel Applet Container ScrollPane Dialog

Mehr

Donnerstag, 16.07.2009 09:00 11:00 Uhr (2 Zeitstunden) Hörsaal 1

Donnerstag, 16.07.2009 09:00 11:00 Uhr (2 Zeitstunden) Hörsaal 1 Klausur Termin und Ort Donnerstag, 16.07.2009 09:00 11:00 Uhr (2 Zeitstunden) Hörsaal 1 Als die drei wesentlichen Merkmale der objektorientierten Programmierung werden Kapselung, Vererbung (Polymorphie)

Mehr

GUI-Programmierung - Einführung

GUI-Programmierung - Einführung GUI-Programmierung - Einführung 1 Kernkonzepte Komponenten (components) Layout ereignisgesteuerte Programmierung (event driven programming) Frames and Components 2 windows (frames) menus labels checkboxes

Mehr