Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
Rekursive Grafiken Reklursive Grafiken.
Zusammenfassung des Kapitels 8
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Java: Programmierung grafischer Oberflächen
Java: Reversi Spielbrett
Java2D Richard Göbel.
Java: Programmierung grafischer Oberflächen
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Grafische Benutzeroberfläche
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Objektorientierte Programmierung JDK-Klassenbibliothek
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Programmieren mit JAVA
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
1DVG3 - Paint Teil 2 Paint Teil2. DVG3 - Paint Teil 2 2 Weitere Entwicklungen Hinzufügen verschiedener Werkzeuge: Punkte Linien Rechtecke, Rechtecke mit.
1DVG3 - eigene AWT-Komponenten Entwicklung eigener AWT-Komponenten.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
08-GraphikImplementierung Implementierung der Graphik in EMMA301Paint.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
Verzweigung.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
© 2005 Pohlig – Taulien: Eine GUI für die Klasse Mathematik Kurs: Come Together 1 April 2005 Eine GUI für die Klasse Mathematik.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
AWT und JFC Abstract Windowing Toolkit
Java: Programmierung grafischer Oberflächen
Jigugegl Java isch guet u git e guete Luun! (frei nach Figugegl) Jigugegl.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Client-Server-Architektur
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Übungen GPanel Quadratfenster mit pixelunabhängigen Windowkoordinaten (doubles) Zweckmässige Standardwerte (defaults) 01 x 0 1 y // WbzEx5.java.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Mit der Turtle Java Programmieren
Mit Java die Turtle steuern
Reklursive Grafiken Teil I
 Präsentation transkript:

Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe möglichst bald aus... Event kann irgendwo auftreten

Learning By Doing TimerEvent (UML-Diagramm) im Delegations-Eventmodell Implementierung der Callbackmethode Zur Registrierung der Callbackmethode Registrierung der Callbackmethode timeElapsed() existiert! Garantieerklärung: timerListener.timeElapsed() Event! Aufruf von Registrierung: Übergeben einer Referenz der Klasse, welche die Callbackmethode enthält, an den Eventhandler, der die Callbackmethode bei jedem Event aufruft.

Learning By Doing // DigitalWatch.java import ch.aplu.util.*; import java.awt.Font; public class DigitalWatch implements TimerListener { private int seconds = 0; private boolean isBell = true; private LoResAlarmTimer timer = new LoResAlarmTimer( L); private GPanel panel = new GPanel(); public DigitalWatch() { panel.font(new Font( "Arial", Font.PLAIN, 200)); timer.addTimerListener(this); while (true) { if (isBell) { isBell = false; panel.clear(); panel.text(0.3, 0.4, Integer.toString(seconds)); seconds++; } public boolean timeElapsed() { isBell = true; return true; } public static void main(String[] args) { new DigitalWatch(); } DigitalWatch while (true) { if (isBell) { isBell = false; panel.clear(); panel.text(0.3, 0.4, Integer.toString(seconds)); seconds++; } CallbackmethodeEventloop Registrierung "Dieser TimerListener wird beim Eventhandler registriert" Implementierung "DigitalWatch implementiert einen TimerListener"

Learning By Doing // WbzEx11.java import java.awt.event.*; import java.awt.Color; import ch.aplu.util.*; public class WbzEx11 { class MyMouseAdapter extends MouseAdapter { public void mousePressed(MouseEvent evt) { Color c = new Color((float)Math.random(), (float)Math.random(), (float)Math.random()); Stern stern = new Stern(p, 50, c); stern.moveAt((int)p.toWindowX(evt.getX()), (int)p.toWindowY(evt.getY())); stern.showMe(); } private GPanel p = new GPanel(0, 500, 0, 500); public WbzEx11() { p.addMouseListener(new MyMouseAdapter()); } public static void main(String[] args) { new WbzEx11(); } MouseEvents Mausevents Registrie- rung Innere Klasse Callbackmethode hat Zugriff

Learning By Doing // WbzEx11a.java import java.awt.event.*; import java.awt.Color; import ch.aplu.util.*; public class WbzEx11a { private GPanel p = new GPanel(0, 500, 0, 500); public WbzEx11a() { p.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent evt) { Color c = new Color((float)Math.random(), (float)Math.random(), (float)Math.random()); Stern stern = new Stern(p, 50, c); stern.moveAt((int)p.toWindowX(evt.getX()), (int)p.toWindowY(evt.getY())); stern.showMe(); } }); } public static void main(String[] args) { new WbzEx11a(); } Anonyme Klassen Registrierung Anonyme Klasse abgeleitet von MouseAdapter

Learning By Doing // WbzEx12.java import java.awt.event.*; import javax.swing.*; import ch.aplu.turtle.*; public class WbzEx12 { private class ButtonActionAdapter implements ActionListener { public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); if (source == runButton) state = States.RUNNING; if (source == stopButton) state = States.STOPPED; if (source == quitButton) state = States.QUITTING; } private enum States {STOPPED, RUNNING, QUITTING}; private States state = States.STOPPED; private JButton runButton = new JButton("Run"); private JButton stopButton = new JButton("Stop"); private JButton quitButton = new JButton("Quit"); ButtonEvents Buttonevents Zustände (Aufzählungstyp) Innere Klasse, implementiert ActionListener aktueller Zustand Instanzvariablen State switch

Learning By Doing ButtonEvents Buttonevents public WbzEx12() { Turtle t = new Turtle(); JPanel jp = t.getPlayground(); jp.add(runButton); jp.add(stopButton); jp.add(quitButton); jp.validate(); ButtonActionAdapter adapter = new ButtonActionAdapter(); runButton.addActionListener(adapter); stopButton.addActionListener(adapter); quitButton.addActionListener(adapter); while (state != States.QUITTING) { switch(state) { case STOPPED: Thread.yield(); break; case RUNNING: t.forward(10).left(10); break; } System.exit(0); } public static void main(String[] args) { new WbzEx12(); } Event loop Buttons in der Komponente anzeigen Registrierung Prozessor freiwillig anderen abgeben

Learning By Doing ButtonEvents Buttonevents // WbzEx12a.java import java.awt.event.*; import javax.swing.*; import ch.aplu.turtle.*; public class WbzEx12a { interface State { int QUITTING = 0; int STOPPED = 1; int RUNNING = 2; } private class ButtonActionAdapter implements ActionListener { public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); if (source == runButton) state = State.RUNNING; if (source == stopButton) state = State.STOPPED; if (source == quitButton) state = State.QUITTING; } private int state = State.STOPPED; private JButton runButton = new JButton("Run"); private JButton stopButton = new JButton("Stop"); private JButton quitButton = new JButton("Quit"); (J2SE 1.4) Simulation des Enum-Typs state-Variable als "dekorierter" int Verwendung durch Vorstellen des Interface-Bezeichners Schon viel besser als state = 2

Learning By Doing ButtonEvents Buttonevents public WbzEx12a() { Turtle t = new Turtle(); JPanel jp = t.getPlayground(); jp.add(runButton); jp.add(stopButton); jp.add(quitButton); jp.validate(); ButtonActionAdapter adapter = new ButtonActionAdapter(); runButton.addActionListener(adapter); stopButton.addActionListener(adapter); quitButton.addActionListener(adapter); while (state != State.QUITTING) { switch(state) { case State.STOPPED: Thread.yield(); break; case State.RUNNING: t.forward(10).left(10); break; } System.exit(0); } public static void main(String[] args) { new WbzEx12a(); } (J2SE 1.4) Verwendung durch Vorstellen des Interface-Bezeichners

Learning By Doing GUI Muster GUI-Muster // WbzEx13.java import java.awt.*; import javax.swing.*; import ch.aplu.util.*; public class WbzEx13 extends JPanel { private int count = 0; public WbzEx13() { JFrame f = new JFrame("Frame Window"); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); f.getContentPane().add(this); f.setBounds(50, 50, 550, 550); f.setVisible(true); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawOval(0, 0, 500, 500); g.drawString("WBZ-Kurs \"Java im Unterricht\"", 180, 250); Graphics2D g2D = (Graphics2D)g; g2D.setStroke(new BasicStroke(8)); Line2D.Double line = new Line2D.Double(20, 300, 480, 300); g2D.draw(line); System.out.println(count++); } public static void main(String[] args) { Console.init(); new WbzEx13(); } JPanel als Grafik-Fenster paintComponent() wird bei jedem System-Trigger aufgerufen JFrame als umfassendes Fenster Aktion beim Klicken des Close-Buttons Füge das JPanel in das JFrame Position und Grösse des JFrames Zeige das JFrame mit Inhalt Aufruf überschr. Methode aus JPanel Zeichnen mit dem Graphics-Context Hole Graphics2D-Context Text als Grafik Indikator für Aufruf von paintComponent Neue Linieneigenschaft (Dicke) Linie als Objekt Zeichne Grafikobjket