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

Slides:



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

der Universität Oldenburg
Ein Beispiel in Java.
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 -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Java: Programmierung grafischer Oberflächen
Java: Programmierung grafischer Oberflächen
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Verzweigung oder bedingte Anweisung Weiter mit PP.
IF-ELSE-IF-Ketten Weiter mit PP..
Grafische Benutzeroberfläche
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
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
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
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.
Java-Kurs Grafik Julian Drerup.
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.
UNDO & SELECT Vortrag : Martin Hiersche
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
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.
© 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.
© 2005 Pohlig – Taulien: Eine GUI für die Klasse Mathematik Kurs: Come Together 1 April 2005 Eine GUI für die Klasse Mathematik.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
© 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,
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.
Objektorientierte Modellierung
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.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Client-Server-Architektur
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
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.
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
© 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 Übung Benutzeroberflächen und Graphik Frames (Fenster)
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Praktische Informatik 1
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
 Präsentation transkript:

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

Kapitel 8: Java-Programmierung 8.1 Ereignisbehandlung, Benutzungsschnittstellen 8.2 Graphikprogrammierung

8.1 Ereignisbehandlung Benutzerinteraktion per Konsolschnittstelle Programm wartet bis Benutzer return eingibt in Java: BufferedReader konsole = new BufferedReader(new InputStreamReader(System.in)) ; try {n = Integer.parseInt(konsole.readLine());} catch (IOException e){} Benutzerinteraktion per GUI (graphical user interface) Viele verschiedene Eingabemöglichkeiten, Ereignisse ablaufgesteuerte Programmierung: Programm = Folge von Anweisungen (= Methodenaufrufen) ereignisgesteuerte Programmierung: Programm = Sammlung von Behandlungsroutinen (= Methoden) für verschiedene Ereignisse

Ereignisse (events) Mausklick, Mausziehen, Mausbewegung, Return-Taste, Tastatureingabe, … programmerzeugte Ereignisse Für die GUI wird mindestens ein separater Thread gestartet, der auf die Ereignisse wartet und sie bearbeitet. Methoden zur Beobachtung bestimmter Ereignisse; explizite Anmeldung der Beobachter

Ereignisse (events) Button Listener Button Programm Thread Event thread click move

Widget Ein Interaktionselement in einer GUI Fenster Menü Schaltfläche (Button) Bildlaufleiste (Scrollbar)...

AWT und Swing zwei weit verbreitete Bibliotheken zur Realisierung von GUIs in Java AWT (Abstract Window Toolkit): Java Hülle um die größte gemeinsame Menge an Widgets der Betriebssysteme Swing: Umfangreichere Bibliothek an GUI Elementen; Was auf einem BS nicht vorhanden ist, wird basierend auf AWT Widgets emuliert

Fenster import java.awt.*; class Fenster extends Frame { Fenster (String titel) { super(titel); setSize(160,120); setVisible(true); } } public class FensterDemo { public static void main(String[] args) { Fenster zumHof = new Fenster("zum Hof"); Fenster zurTür = new Fenster("zur Tür"); }

Fensterbeobachter import java.awt.event.*; class FensterBeobachter extends WindowAdapter{ public void windowClosing(WindowEvent e) { System.exit(0); } class Fenster extends Frame { Fenster (String titel) {... FensterBeobachter fb = new FensterBeobachter(); addWindowListener(fb);...

Knöpfe und Knopfbeobachter class KnopfBeobachter implements ActionListener{ public void actionPerformed(ActionEvent e) { System.out.println("Knopf gedrückt!"); } } class Fenster extends Frame { Fenster (String titel) {... Button knopf = new Button("Knopf!"); knopf.addActionListener(new KnopfBeobachter()); add(knopf);...

aktive Komponenten Zur Verwendung aktiver Komponenten (Knöpfe, Schalter, …) sind immer folgende Schritte nötig Erzeugen – Button b = new Button () Registrieren – add(b) Verbinden zur Ereignisbehandlung – add....Listener(this) Methode zur Ereignisbehandlung schreiben actionPerformed, itemStateChanged, adjustmentValueChanged,...

anonyme Beobachter class Fenster extends Frame { Fenster (String titel) {... Button knopf2 = new Button("Knopf2"); knopf2.addActionListener (new ActionListener (){ public void actionPerformed(ActionEvent e) { System.out.println("Knopf2 gedrückt!"); }}); add(knopf2);...

Layout-Fragen class Fenster extends Frame { Fenster (String titel) {... setLayout(new FlowLayout()); Button knopf2 =... mehrere verschiedene Layouts verfügbar! BorderLayout FlowLayout GridLayout CardLayout GridBagLayout Schachtelung von Layouts möglich

Beispiel: eine Stoppuhr Zeitanzeige in Minuten:Sekunden:Hunderstel class UhrzeitThread extends Thread{ public void run(){ while(running){ elapsedTime = (System.currentTimeMillis() - startTime); csec = (int) (elapsedTime % 1000 / 10); sec = (int) (elapsedTime / 1000) % 60; min = (int) (elapsedTime / 60000); zeitAnzeigeCsec.setText(((csec < 10)? "0" : "") + csec); zeitAnzeigeSec.setText(" : " + ((sec < 10)? "0" : "") + sec + " : "); zeitAnzeigeMin.setText(((min < 10)? "0" : "") + min); } } }

Knöpfe für Start/Stop und Reset class ButtonListenerStartStop implements ActionListener{ public void actionPerformed(ActionEvent e){ if (! running){ running = true; startstop.setLabel("Stop"); startTime = System.currentTimeMillis(); UhrzeitThread uhrAnzeige = new UhrzeitThread(); uhrAnzeige.start(); } else { running = false; startstop.setLabel("Start"); } } } class ButtonListenerReset implements ActionListener{ public void actionPerformed(ActionEvent e){ running = false; elapsedTime = 0; zeitAnzeigeMin.setText("00"); zeitAnzeigeSec.setText(" : 00 : "); zeitAnzeigeCsec.setText("00"); startstop.setLabel("Start"); } }

Rahmenprogramm class Zeitmessung extends Frame { public Zeitmessung(){ zeitAnzeigeMin = new Label(); zeitAnzeigeMin.setBounds(50, 100, 120, 200); add(zeitAnzeigeMin); // … und genauso für zeitAnzeigeSec, zeitAnzeigeCsec startstop = new Button("Start"); startstop.setBounds(50,650,100,50); startstop.addActionListener(new ButtonListenerStartStop()); add(startstop); reset = new Button("Reset"); reset.setBounds(290, 650, 100, 50); reset.addActionListener(new ButtonListenerReset()); add(reset); public static void main(String[] args) { Zeitmessung uhr = new Zeitmessung(); uhr.setBounds(0, 0, 400, 400); uhr.setVisible(true); } }

8.2 Graphikprogrammierung Mausevents werden nach dem selben Schema behandelt Ausgabe graphischer Elemente (Linien, Kreise, Vielecke, Polygone…) mit Objekt der Klasse Graphics Methoden: drawLine, fillPolygon, drawOval, … Konstruktor getGraphics() addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); }...

ein Malprogramm... addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); } public void mouseReleased(MouseEvent e) { x2 = e.getX(); y2 = e.getY(); Graphics g = getGraphics(); g.setColor(Color.blue); int w=Math.abs(x1-x2), h=Math.abs(y1-y2); switch (modus) { case 1: g.fillRect(x1,y1,w,h); break; case 2: g.fillOval(x1,y1,w,h); break; } } });...

Animationen Bei Veränderung des Fensters (z.B. Vergrößern) geht die Zeichnung verloren paint (Graphics g) zur Ausgabe der Zeichnung, wird bei Fensterveränderungen automatisch aufgerufen paint muss so programmiert werden, dass es alle Zeichnungsobjekte ausgibt Eintrag von Zeichnungsobjekten in Collection (z.B. Set), iterative Ausgabe aller Elemente Die selbe Methode kann für Animationen benutzt werden Aufruf von paint() in eigenem Thread, alle 40 ms