Kapitel 7: GUI-Rahmenwerk: AWT & Swing

Größe: px
Ab Seite anzeigen:

Download "Kapitel 7: GUI-Rahmenwerk: AWT & Swing"

Transkript

1 Kapitel 7: GUI-Rahmenwerk: AWT & Swing 7.1 Aufbau & Funktionsweise 7.2 Beispiel Counter im Detail 7.3 Grafikprogrammierung an Beispielen 'The night is fine', the Walrus said, 'Do you admire the view?' Lewis Carroll Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-1

2 Entwicklungstufen von Benutzerschnittstellen Stapelverarbeitungssprache (batch control, job control) Zeilenorientierte Kommandosprache (Dialoge) z.b. Kommandosprachen von MS-DOS, UNIX Skriptsprachen-Interpreter: Shells Bildschirm- und Masken-orientierter Dialog z.b. Dialogoberfläche von MVS, VM/CMS Graphische Benutzungsoberfläche (Graphical User Interface) Multimedia-Benutzungsoberfläche Virtuelle Welt,... Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-2

3 GUIs: Meilensteine der Entwicklung 1980: Smalltalk-80-Oberfläche (Xerox-Star) 1983/84: Lisa/Macintosh-Oberfläche (Apple) 1985+: X-Windows / Motif (OSF) 1988: NextStep (Next) 1989?: OpenLook (Sun) 1987/91: OS/2 Presentation Manager (IBM) 1990: Windows 3.0 (Microsoft) 1995+: Windows 95/NT/XT (Microsoft) 1995+: AWT und Swing (SunSoft) und Linux CDE... AWT teils schon legacy Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-3

4 1973: XEROX Alto Maus & Bitmap 1984: Apple Macintosh 1981: XEROX Star echte Fenster 1985: X-Windows MIT 1988: NextStep Display- Postscript Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-4

5 Java Abstract Window Toolkit & Swing AWT: Grafik, Oberflächenkomponenten ( heavyweight ), Layout-Manager, Ereignisbehandlung Swing: AWT-Ergänzung, leistungsstarke Komponenten ( lightweight ) AWT: Look and Feel an Plattform angepasst Swing: Look and Feel von Plattform unabhängig Windows Solaris Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-5

6 GUIs erfüllen ergonomische Anforderungen Entspanntes Arbeiten Kontrolle beim Benutzer statt beim Programm Gedächtnis entlasten: Browsing statt Kommandos Fehlertoleranz: Undo-Operationen Menschengerechte Darstellung von Systemzustand: direkt manipulierbar Datenmengen: Ausschnitte in Fenstern, navigierbar Verzahnte Abläufe unterstützt flexibel & aufgabenangemessen den Menschen unterstützen Daten quasiparallel in verschiedenen Werkzeugen Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-6

7 7.1 Aufbau & Funktionsweise Ergonomische Anforderungen umsetzen: Kontrolle beim Benutzer => Call-Backs (OS und Java!), aktiviert auf Ereignisse hin. Einheitliches Look & Feel Menschengerechte Darstellung => Fenster aus Standard-Komponenten, zusammengebaut nach Layout-Strategien, direkt manipulierbar durch Benutzer. Verzahnte Abläufe => möglich durch Tasking (siehe Kap. 6), unterstützt durch MVC-Architektur(-Muster). Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-7

8 Oberflächenbausteine in Java - 1 Component (abstrakt): Oberklasse (fast!) aller Bestandteile der Oberfläche public void setsize (int width, int height); public void setvisible (boolean b); u.a. Basis des Event-Handlings Container (abstrakt): Oberklasse der Komponenten, die andere Komponenten enthalten public void add (Component comp); public void setlayout (LayoutManager mgr); u.a. Basis der Layout-Gestaltung Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-8

9 Oberflächenbausteine in Java - 2 JPanel (konkret): Standard-Container für Layout rahmenlose Zeichenfläche Oberklasse von Applet Window (abstrakt): Gemeinsamkeiten von Frame und Dialog public void pack(); JFrame (konkret): echtes Anwendungs-Fenster mit Titel Dialog (abstrakt): Oberklasse von modalen Eingabe-Fenstern z.b. MessageDialog, InputDialog Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-9

10 Oberflächenbausteine in Java - 3 JTextComponent: Oberklasse von TextField und TextArea public void settext(string t); public String gettext(); public void seteditable(boolean b); JTextField: Textfeld mit einer Zeile JLabel: Einzeiliger unveränderbarer Text JButton: Druckknopf mit Textbeschriftung Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-10

11 AWT-Klassenhierarchie (Ausschnitt) Object Bekanntes Muster!! MenuComponent Component * MenuBar MenuItem Text Component Label Button Container Menu TextField Panel Window ScrollPane PopupMenu Swing-Komponenten mit einem J davor Dialog FileDialog Frame Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-11

12 Layout-Festlegung Layout-Manager-Objekte ordnen Container-Inhalt an FlowLayout (links-/rechtsbündig/zentriert, Abstände) GridLayout (Zeilen[0=*], Spalten, Abstände) BorderLayout (Platzierungen: North, West,..., Center) GridBagLayout (für gehobene Ansprüche) leer / selbstdefinierter LayoutManager Beispiel für Entwurfsmuster Strategy Kapselung der Strategie in einem Manager-Objekt ähnlich verwendbar bei Spiel-Strategien ähnlich auch bei Durchlauf-Strategien für Graphen Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-12

13 Am Beispiel: Layout-Strategien für 5 Buttons JButton button1 = new JButton("einfach"); JButton button2 = new JButton("eine"); JButton button3 = new JButton("Reihe"); JButton button4 = new JButton("von"); JButton button5 = new JButton("JButtons"); panel.setlayout( new FlowLayout(FlowLayout.LEFT,10,30)); panel.setlayout( Eins von beiden! new GridLayout(0,2,10,30)); panel.add(button1); panel.add(button2); panel.add(button3); panel.add(button4); panel.add(button5); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-13

14 Wirkung der Layout-Strategien FlowLayout(FlowLayout.LEFT,10,30) GridLayout(0,2,10,30)) Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-14

15 Layout-Festlegung absolut Es geht auch ohne Layout-Manager: JButton b = new JButton("fest"); JPanel p = (JPanel)getContentPane(); p.setlayout(null); p.add(b); b.reshape(100,50,60,10); // Einzüge links und oben, Breite, Höhe Vorgehen nicht erstrebenswert, weil Probleme bei größenverändernden Fensteroperationen, z.b. Knopf verschwindet in nicht sichtbarem Bereich Verschiedene OS-Fenstersysteme verschiedene Proportionen realisieren => Portierungsprobleme Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-15

16 Ereignisse Definition: Ein Ereignis ist ein Vorgang in der Umwelt des Softwaresystems von vernachlässigbarer Dauer, der für das System von Bedeutung ist, z.b. eine Benutzerinteraktion. Beispiele für Benutzerinteraktions-Ereignisse: Drücken eines Knopfs, einer Taste, Mausklick Auswahl eines Menüpunkts Verändern von Text Zeigen auf ein Gebiet Öffnen, Schließen oder Verschieben eines Fensters Andere Ereignisse sind z.b. Signale von Timern oder von anderen Programmen Objekte, die Ereignisse beobachten, heißen Listener. Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-16

17 Behandlung von Ereignissen Benutzereingabe (Tastendruck, Mausklick) Tastatur- bzw. Maustreiber gibt Daten (Scancode, Position, Zeit) an OS Fenstersystem des OS gibt Daten an angesprochenes Fenster Fenster mit Java-Programm ermittelt (über Layout) die Komponente Controller Java gibt Daten an den zur Komponente gehörigen Listener weiter Der vom Programmierer entwickelte Callback-Code ändert Modell View Modelländerung zieht evtl. Änderung des Fensterinhalts nach sich Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-17

18 Ereignis-Klassen Klassen der Benutzeroberfläche: Window / Frame Panel Button TextField,... entsprechende Ereignisklassen: WindowEvent MouseEvent ActionEvent KeyEvent,... Zuordnung (Beispiele): Window (Frame) erzeugt WindowEvent» z.b. bei Betätigung des Schließknopfes Button erzeugt ActionEvent Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-18

19 Beispiel Fenster schließen public interface WindowListener extends EventListener { public void WindowClosed (WindowEvent ev); public void WindowOpened (WindowEvent ev); public void WindowIconified (WindowEvent ev);... public void WindowClosing (WindowEvent ev); public class WindowAdapter implements WindowListener { Andere Beispiele für Adapter-Muster vgl Kap 4, S. 25 ff public void WindowClosed (WindowEvent ev) { public void WindowOpened (WindowEvent ev) { public void WindowIconified (WindowEvent ev) {... public void WindowClosing (WindowEvent ev) {... implementiert alle Aktionen formal durch Nichtstun Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-19

20 Schließbares Fenster in Java import java.awt.*; import java.awt.event.*; class WindowCloser extends WindowAdapter { public void windowclosing(windowevent event) { System.exit(0); class ExampleFrame extends Frame { public ExampleFrame () { settitle("example"); setsize(150,50); addwindowlistener(new WindowCloser()); setvisible(true); public static void main (String[] argv) { ExampleFrame f = new ExampleFrame(); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-20

21 Schließbares Fenster: Klassenstruktur <<interface>> WindowListener windowclosing (e: WindowEvent) Window addwindowlistener (l: WindowListener) <<use>> WindowEvent WindowAdapter Frame setsize settitle setvisible WindowCloser registriert bei ExampleFrame Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-21

22 Die Model-View-Controller-Architektur Graphische Oberflächen erlauben, dass dieselbe Information in mehreren (verschiedenen oder gleichartigen) Fenstern gleichzeitig angezeigt wird oder mehrfach in einem Fenster auf verschiedene Weisen (z.b. Explorer mit Dateibaum und Dateiliste). Dabei ist ein zeitlich verzahntes, quasi-paralleles Arbeiten auf derselben Information möglich. Die verschiedenen Fenster müssen irgendwie synchronisiert und die Information konsistent gehalten werden. Fenster können dynamisch hinzukommen oder entfallen. Die Model-View-Controller-Architektur wurde entwickelt, um mit solchen Situationen systematisch umzugehen: Das Modell (Model) repräsentiert Programmzustand und -daten. Die Sicht (View) ist die Darstellung der Information auf dem Bildschirm. Die ereignisorientierte Steuerung (Controller) ist für die Verarbeitung der Benutzereingaben zuständig. Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-22

23 Modell und Sicht Ereignisse bewirken Änderungen Sicht Sicht Benachrichtigung über Änderungen Modell Beispiel: Dokumentenansicht, Statusanzeige,... Frage: Wie hält man das Modell unabhängig von den einzelnen Sichten darauf? Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-23

24 Das Beobachter - Muster (auch Publisher/Subscriber ) A-Beobachter update beobachtet * <<interface>> Observer update A for all observers o do: o.update() Observable addobserver deleteobserver setchanged notifyobservers Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-24

25 java.util.observable, java.util.observer public class Observable { public void addobserver(observer o); public void deleteobserver(observer o); protected void setchanged(); public void notifyobservers(); public void notifyobservers(object arg); public interface Observer { public void update (Observable o, Object arg); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-25

26 Beispielablauf (Sequenzdiagramm) a: A b1: A-Beobachter b2: A-Beobachter addobserver(b1) addobserver(b2) setchanged() notifyobservers(arg) update(arg) update(arg) Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-26

27 Zum Beobachter-Muster Beobachtete Klassen definieren, welche Veränderungen beobachtbar sind, d.h. aktiv den Beobachtern mitgeteilt werden und wann die Mitteilung erfolgen soll. Beobachtete Klassen haben keine Information darüber, was die Beobachter konkret tun; sie müssen nicht geändert werden, wenn sich Beobachter verändern, wenn neue Beobachter dazukommen oder Beobachter wegfallen. Die Argumente für notify() beschreiben»meist nur Art der Änderung, nicht gesamte Zustandsinformation» Beobachter können normale Methodenaufrufe nutzen, um sich näher zu informieren. Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-27

28 7.2 Beispiel Counter im Detail Dear System Builder, I love to count. Build me a system to help me with that counting.... I love to count lots of things. Regards, The Count Peter Coad & Jill Nicola Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-28

29 Das Counter-Beispiel Ein paar Details nur im kompletten Programm! Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-29

30 Counter-Steuerung über Menü Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-30

31 Counter-Steuerung über Knöpfe Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-31

32 Model-View-Controller-Architektur View Controller bc: ButtonController cf: CounterFrame <<beobachtet>> <<ändert>> Model c: Counter 4711 Counter value increment setvalue Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-32

33 Counter: das fachliche Modell class Counter { private int value = 0; public int getvalue() { return value; public void setvalue(int v) { value = v; public void reset() { setvalue(0); public void increment() { setvalue(getvalue()+1); public void decrement() { setvalue(getvalue()-1); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-33

34 Beobachtbares Modell (Model) class Counter extends Observable { private int value = 0; public int getvalue() { return value; public void setvalue(int v) { value = v; setchanged(); notifyobservers(); Von Observable ererbte Methoden! public void reset() { setvalue(0); public void increment() { setvalue(getvalue()+1); public void decrement() { setvalue(getvalue()-1); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-34

35 CounterFrame: kombiniert View & Controller Komponenten vereinbaren Paneele, Knöpfe, Menü, Wertanzeige mit Beschriftung View erzeugen im Konstruktor von CounterFrame JPanel, JButtons,... Panele mit LayoutManagern ausstatten Komponenten in Panele bzw. Menü einfügen Controller für Komponenten Aktionen für Knöpfe und Menü-Punkte Anbindung ans Modell muss also ein Observer sein (update-methode) Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-35

36 Counter: Struktur der Oberfläche Fensterrahmen (OS-spezifisch) mit Titel & Knöpfen change menubar valuelabel valuedisplay diplaypanel incbutton resetbutton decbutton buttonpanel panel Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-36

37 Counter: die Komponenten anlegen panel = (JPanel)getContentPane(); buttonpanel = new JPanel(); incbutton = new JButton("Increment"); resetbutton = new JButton("Set to Zero"); decbutton = new JButton("Decrement"); displaypanel = new JPanel(); valuelabel = new JLabel("Current Value: "); valuedisplay = new JTextField("0",8); menubar = new JMenuBar(); change = new JMenu("Change"); negative = new JMenuItem("times (-1)"); tovalue = new JMenuItem("to..."); tomax = new JMenuItem("to Max"); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-37

38 Counter: Container und LayoutManager panel.setlayout(new BorderLayout()); buttonpanel.setlayout(new FlowLayout()); buttonpanel.add(incbutton); buttonpanel.add(resetbutton); buttonpanel.add(decbutton); panel.add(buttonpanel,"south"); displaypanel.add(valuelabel); valuedisplay.sethorizontalalignment(4); valuedisplay.seteditable(false); displaypanel.add(valuedisplay); panel.add(displaypanel,"center"); change.add(negative); change.add(tovalue); change.add(tomax); menubar.add(change); setjmenubar(menubar); FlowLayout ist Default! rechtsbündig Norden, Osten und Westen bleiben leer Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-38

39 Counter: Aktionen für Knöpfe incbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { mycounter.increment(); ); Anonyme innere Klassen resetbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { mycounter.setvalue(0);... mit redefinierten Methoden ); decbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { mycounter.decrement(); ); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-39

40 Counter: Aktionen für Menüpunkte tovalue.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { String num = JOptionPane.showInputDialog("new value is?"); mycounter.setvalue(integer.parseint(num)); ); negative.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { mycounter.setvalue(0-mycounter.getvalue()); ); tomax.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { mycounter.setvalue( ); ); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-40

41 Counter: Anbindung ans Modell // die Modellanbindung im Konstruktor final Counter mycounter = c; c.addobserver(this); final, damit in inneren Klassen ansprechbar // dazu eine Observer-spezifische Methode public void update(observable o, Object a){ valuedisplay.settext( String.valueOf(((Counter)o).getValue()) ); wenn sich das Model ändert Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-41

42 7.3 Grafikprogrammierung an Beispielen Jedes Paneel bringt seinen Zeichenstift mit, den man sich wie folgt beschaffen kann: Graphics g = drawpane.getgraphics() (); Elementare Zeichenoperationen: g.setcolor(color.blue); //.black. oder... g.drawline(fromx,fromy,tox,toy); g.drawarc(...); // Bezier g.setfont(...); g.drawstring("hallo"); "); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-42

43 Komplexere Grafikoperationen Mehr siehe Graphics2D g.drawoval(topleftx,toplefty,width,height); g.filloval(topleftx,toplefty,width,height); g.drawrect(topleftx,toplefty,width,height); g.fillrect(topleftx,toplefty,width,height); topleft height width g.drawpolygon(xkoords,ykoords,size); g.fillpolygon(xkoords,ykoords,size); Zwei Arrays der Länge Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-43

44 Beispiel Scribble Eine minimale Grafik-Anwendung, das Scribble -Zeichenprogramm: Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-44

45 Scribble : die Komponenten anlegen // Komponenten als Attribute vereinbaren: private int lastx, lasty; // letzte Maus-Koordinaten JPanel panel; JButton erasebutton; im Konstruktor // Komponenten anlegen und platzieren: panel = (JPanel)getContentPane(); panel.setlayout(new BorderLayout()); erasebutton = new JButton("Erase"); panel.add(erasebutton,"south"); final JPanel drawpane = new JPanel(); panel.add(drawpane,"center"); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-45

46 Scribble : Aktionen für Fenster und Knopf // Fenster schließbar addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { dispose(); System.exit(0); ); // Scribble-Operation Erase erasebutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { Graphics g = drawpane.getgraphics() (); g.setcolor(drawpane.getbackground drawpane.getbackground()); g.fillrect(0,0,getsize().width, ); getsize().height); Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-46

47 Scribble : Aktionen für Mausbewegungen // Scribble-Maus-Operationen drawpane.addmouselistener(new MouseAdapter() { public void mousepressed (MouseEvent e) { lastx = e.getx(); lasty = e.gety(); ); drawpane.addmousemotionlistener (new MouseMotionAdapter() { public void mousedragged (MouseEvent e) { int x = e.getx(); int y = e.gety(); Graphics g = drawpane.getgraphics(); g.drawline(lastx,lasty,x,y); ); lastx = x; lasty = y; Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-47

48 Beobachtung bei Scribble Bei Fensterbewegungen, -größenveränderung etc verschwindet das gezeichnete Bild?! Zusammenspiel der Zeichenmethoden im Grafikframework: update() nach Fensterbewegungen etc automatisch paint() die eigentliche Zeichenmethode => redefinieren! repaint() Anstossen des Zeichenvorgangs vom Progamm aus Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-48

49 Technik des Double Buffering class... extends JPanel { public void paint (Graphics g) { if (im == null) { im = createimage(width,height); gr = im.getgraphics(); // mit gr auf im zeichnen g.drawimage(im,0,0,width,height,this); public void refresh ( ) { im = null; flickerfreie Animation Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-49

50 Beispiel Dashboard Eine komplexere Grafik-Anwendung ist das Dashboard - Simulationsprogramm: Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-50

51 Beispiel Dashboard zeigt viel: Simulation lose gekoppelte Geräte => Observer & Observable Zeittakt-gesteuert => Timer-Thread Gerätehierarchie Dial (rpm, mph) Gauge (Fuel, Temp, Oil) => Double Buffering Pedal (Accelerator, Brake) Benutzersteuerbare Geräte Gas, Bremse, Schaltung Knöpfe zum Tanken => Controlle / Listener Layout Fenster insgesamt im Border-Layout 3 x 3 Grid im Center-Bereich des Fensters darunter (South) die Knöpfe in zentriertem Flow-Layout Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-51

52 Dashboard : Struktur des Center-Panels Gridlayout 3 x 3 : Fensterrahmen (OS-spezifisch) mit Titel & Knöpfen FuelView TempView OilView SpeedView TurnView Acc.-View GearView BrakeView Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-52

53 Dashboard : Klassendiagramm Panel GaugeView DialView PedalView GearView FuelView OilView TempView TurnView SpeedView Acc.-View BrakeView dependants Observer Dashboard CarModel Timer Observable Thread Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-53

54 Dashboard : View- und Controller-Klassen ItemListener MouseListener MouseAdaptor als innere Klassen in Dashboard!! Gear- Item- Listener Brake- Mouse- Listener Acc.- Mouse- Listener GearView BrakeView Acc.-View Dashboard Lothar Schmitz UniBwM (teils nach Prof. Hußmann TUD) Objektorientierte Programmierung K7-54

Seite 1. Kapitel 7: GUI-Rahmenwerk: AWT & Swing. Entwicklungstufen von Benutzerschnittstellen

Seite 1. Kapitel 7: GUI-Rahmenwerk: AWT & Swing. Entwicklungstufen von Benutzerschnittstellen Entwicklungstufen von Benutzerschnittstellen Kapitel 7: GUI-Rahmenwerk: AWT & Swing 7.1 Aufbau & Funktionsweise 7.2 Beispiel Counter im Detail 7.3 Grafikprogrammierung an Beispielen 'Thenightisfine', thewalrussaid,

Mehr

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 'The

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

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

1. Konventionelle Ein-/Ausgabebetonte Programmierung

1. Konventionelle Ein-/Ausgabebetonte Programmierung 1. Konventionelle Ein-/Ausgabebetonte Programmierung 1.1 Realisierung grafischer Benutzungsoberflächen Beispiel Java AWT und Swing 1.2 Grundlagen der 2D-Computergrafik Beispiel Java-Grafikprogrammierung,

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

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

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

7. Architektur interaktiver Systeme

7. Architektur interaktiver Systeme 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen 7. Architektur interaktiver Systeme 7.2 Ereignisgesteuerter Programmablauf

Mehr

B1. Ein-/Ausgabebetonte Programmierung

B1. Ein-/Ausgabebetonte Programmierung B1. Ein-/Ausgabebetonte Programmierung B1.1 Mensch-Maschine-Kommunikation B1.2 Modell-Sicht-Paradigma B1.3 Bausteine für grafische Oberflächen B1.4 Ereignisgesteuerte Programme Ludwig-Maximilians-Universität

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

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

7. Architektur interaktiver Systeme

7. Architektur interaktiver Systeme 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen (Fortsetzung) Layout-Manager Definition Ein Layout-Manager ist ein Objekt,

Mehr

B1. Ein-/Ausgabebetonte Programmierung

B1. Ein-/Ausgabebetonte Programmierung B1. Ein-/Ausgabebetonte Programmierung B1.1 Mensch-Maschine-Kommunikation B1.2 Modell-Sicht-Paradigma B1.3 Bausteine für grafische Oberflächen B1.4 Ereignisgesteuerte Programme Ludwig-Maximilians-Universität

Mehr

B1. Ein-/Ausgabebetonte Programmierung

B1. Ein-/Ausgabebetonte Programmierung B1. Ein-/Ausgabebetonte Programmierung B1.1 Mensch-Maschine-Kommunikation B1.2 Modell-Sicht-Paradigma B1.3 Bausteine für grafische Oberflächen B1.4 Ereignisgesteuerte Programme Ludwig-Maximilians-Universität

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

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

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

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

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

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

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2) Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

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

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

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

Kapitel 8: Grafische Benutzerschnittstellen

Kapitel 8: Grafische Benutzerschnittstellen Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

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

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 Gliederung 1. Fototechnik und digitale Bildbearbeitung

Mehr

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen Einführung in die Programmierung für NF Grafische Benutzeroberflächen Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorienferte Programmierung kennenlernen.

Mehr

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik GUI-Programmierung mit Java Teil I Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI GUI-Programmierung V3.0 2011 by WBR1&MOU2/BFH-TI Lernziele Die Kursteilnehmer sind in

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

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

Das Model View Controller (MVC) Konzept

Das Model View Controller (MVC) Konzept Das Model View Controller (MVC) Konzept Ziel: Erhöhung der Flexibilität und Reduktion der Komplexität von GUI-Programmen durch Standard- Struktur (MVC-Pattern). Geht zurück auf Smalltalk. View 1 View 2

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

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

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

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek 1 Ereignis-orientierte Programmierung Prinzipien Programm besteht aus einer Reihe von Dämonen (=Listener) Dämon (=Listener)

Mehr

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 22 Einführung: Grafische Benutzeroberflächen 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

Medientechnik. Andreas Butz Ludwig-Maximilians-Universität München Sommersemester Vorlesungskonzept: Heinrich Hußmann

Medientechnik. Andreas Butz Ludwig-Maximilians-Universität München Sommersemester Vorlesungskonzept: Heinrich Hußmann Medientechnik Andreas Butz Ludwig-Maximilians-Universität München Sommersemester 2008 Vorlesungskonzept: Heinrich Hußmann 1 1b. Ein-/Ausgabebetonte Programmierung B1.1Mensch-Maschine-Kommunikation B1.2Modell-Sicht-Paradigma

Mehr

In Track B generell gute Java-Kenntnisse vorausgesetzt!

In Track B generell gute Java-Kenntnisse vorausgesetzt! Aufbau der Vorlesung Termin Tag Vorlesung, Track A Vorlesung, Track B Übung 18.4 Mi Ein- und Ausgabetechnik Noch keine Übungen 20.4 Fr Swing Teil 1 25.4 Mi Grundlagen Fototechnik Swing Teil 1 27.4 Fr Swing

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

2. Programmierung von Benutzungsschnittstellen. 2.1 Modell-Sicht-Paradigma 2.2 Bausteine für grafische Oberflächen 2.3 Ereignisgesteuerte Programme

2. Programmierung von Benutzungsschnittstellen. 2.1 Modell-Sicht-Paradigma 2.2 Bausteine für grafische Oberflächen 2.3 Ereignisgesteuerte Programme 2. Programmierung von Benutzungsschnittstellen 2.1 Modell-Sicht-Paradigma 2.2 Bausteine für grafische Oberflächen 2.3 Ereignisgesteuerte Programme Kap. 2 (Einschub in Kap. 1) Folie 1 Gliederung 1. Fototechnik

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

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

Beispiel: Eine Choice-Liste...

Beispiel: Eine Choice-Liste... Beispiel: Eine Choice-Liste...! "#%$&! ; = '( ) )+**,-. /*0 1 2 ) 3 #%$+45* 6 7%$& -* 89 #6 #:/*0 #%$ < /0 # 1< ) 1< >?270 #@ < /0 # 1 2 ) )

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

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

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel 17. 6. 2010 Kapitel 8: Java-Programmierung 8.1 Ereignisbehandlung, Benutzungsschnittstellen 8.2 Graphikprogrammierung 8.1 Ereignisbehandlung

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

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt GUI GUI = Graphical User Interface Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt Gute Übersicht über alle Funktionalitäten

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

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit 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

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

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

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

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

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

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

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

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Tag 9: Grafische Benutzeroberflächen

Tag 9: Grafische Benutzeroberflächen Kapitel 10 Tag 9: Grafische Benutzeroberflächen In Java gibt es zunächst zwei verschiedene Möglichkeiten Klassen für die Grafikausgabe zu verwenden. Eine Möglichkeit ist AWT (=Abstrakt Windows Toolkit)

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

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

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale und Objekt-Orientierte Programmierkonzepte Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1

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

Ereignisverwaltung und Layout-Typen

Ereignisverwaltung und Layout-Typen Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Ereignisverwaltung

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Auswahl aus mehreren Alternativen:

Auswahl aus mehreren Alternativen: 907 908 Texteingabe: TextField zeigt eine Text-Zeile, die vom Benutzer modifiziert werden kann. TextArea zeigt mehrere modifizierbare Text-Zeilen. Auswahl aus mehreren Alternativen: List scrollbare Liste

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für

Mehr

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Was passiert, wenn Button Ok? mit Maus angeklickt? Ein Beispiel-Frame Was passiert, wenn Button "Ok?" mit Maus angeklickt? gar nichts!!! FH AACHEN UNIVERSITY OF APPLIED SCIENCES OOS Prof. Dr. H. Faßbender Ereignisverarbeitung 27. April 2016 1 Implementierung

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

Einführung in GUI-Programmierung. javax.swing

Einführung in GUI-Programmierung. javax.swing Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt

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

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Einführung in die Programmierung für NF. Übung

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 09 18.12.2013 Inhalt Korrektur Blatt 8 Wiederholung Design Patterns Einführung in GUI s mit Java Swing und AWT Einführung in die Programmierung für NF Übung

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC Progwerkstatt Philipp Güttler, Christoph Schied, Nicolai Waniek 01.12.2008 Seite 2 Drucken Drucken ist eigentlich ganz einfach...

Mehr

(C) Sortieren und Suchen mit Java.-AWT Seite 1

(C)  Sortieren und Suchen mit Java.-AWT Seite 1 Sortieren sowie Suchen mit dem Halbierungsverfahren, programmiert mit der Java-AWT Funktion und Oberfläche sind in getrennten Klassen untergebracht. Die ganze Anwendung besteht damit aus drei Dateien:

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

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

Architektur interaktiver Systeme

Architektur interaktiver Systeme Architektur interaktiver Systeme 1) Entkopplung durch Sichten Prof. Dr. rer. nat. habil. Uwe Aßmann Institut für Software- und Multimediatechnik Lehrstuhl Softwaretechnologie Fakultät für Informatik TU

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

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

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs.

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs. Benutzeroberflächen Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, graphische Ausgabe, Menüs. Der Abstract Windowing Toolkit (awt) Jedes moderne Betriebssystem stellt bereit Fenster Menüs

Mehr

8 Design Patterns. Events

8 Design Patterns. Events 8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Sommersemester Implementierung III: GUI und Verhalten (Teil 2) Sommersemester 2003 Implementierung III: GUI und Verhalten (Teil 2) 26 Aufgabe 5 Implementierung III: GUI und Verhalten (Teil 2) Umfang: 1 Woche Punkte: 50 P. Als Nächstes soll die Implementierung des

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

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

Programmieren 2 07 JavaFX-Properties und Data-Binding

Programmieren 2 07 JavaFX-Properties und Data-Binding Programmieren 2 07 JavaFX-Properties und Data-Binding Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Letztes Mal haben wir Entwickler synchronisiert...

Mehr