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

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

GUI Programmierung mit JAVA Swing

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

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

Objektorientierte Software-Entwicklung

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

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

NTB Druckdatum:

Graphische Benutzungsoberflächen

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

Probeklausur Informatik 2 Sommersemester 2013

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

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

Graphical User Interfaces

Funktionale und Objekt-Orientierte Programmierkonzepte

Programmieren 2 Selbststudium Semesterwoche 4

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

Grafische Benutzeroberflächen

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

Javakurs für Fortgeschrittene

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

Ereignisse (Events) in Java

Objektorientierte Programmierung

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

Graphische Programmierung: GUIs: graphical user interfaces

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Grafische Benutzeroberflächen

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

Javakurs für Fortgeschrittene

Grafische Benutzeroberflächen mit Swing

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Klausur Softwaretechnik / JAVA Fachbereich BW, für WINFO

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

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

Ereignisverwaltung und Layout-Typen

Appletprogrammierung

Betreutes Programmieren Vorlesung Informatik II, Blatt 5

Session 1: Classes and Applets

Einige vorgefertigte Layout-Manager:

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

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java.

DHBW Karlsruhe, Angewandte Informatik Programmieren in JAVA W. Geiger, T. Schlachter, C. Schmitt, W.

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

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

Zeichnen und animieren

Ein Manager mit CardLayout layout/cards.java

'($)*'+ $, *$+*$'- $..$+/, 01.2$, 2*$0, - $'($)*'+ $, *$+*$

Einstieg in die Informatik mit Java

Instrumentierung und Dekodierung

Interaktive Elemente, GUI-Programmierung

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101

Kurs: Programmieren in Java

Java für Computerlinguisten

Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)

Eventhandling. Delegation model Eventhandler model

Klausur vom 14. Juni Informatik 4

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Hauptklausur: PRGII MD

Info B VL 11: Innere Klassen/Collections

Programmieren in Java

public class MyChoice implements PlayConstants { private PlayGround ground; private YourChoice yours; private int acceptablechoice, value; public

Kapitel 7: Ereignis-basierte Kommunikation

Einstieg in die Informatik mit Java

Benutzeroberflächen. Java Teil 4

public class Beispiel1 extends Frame {

RP6_NNetz.java. Page 1

Abstract Window Toolkit

Übungsmodus und Reviews

Java - Programmierung - Applets 1

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Grafikprogrammierung mit Java Teil 1/2

Vorlesung Informatik II

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

...erinnern Sie sich? oopjs4b / kwhbkd4r

Gui & Widgets. GUI & Widgets, Events GUI? Als GUI (= Graphical User Interface ) bezeichnet man die

8.6 Visualisierung der Sortieralgorithmen

Speichern der Benutzereinstellungen

Institut für Informatik

GUI Programmierung in Java

7. Architektur interaktiver Systeme

$ java awt.main A # typische Dekodierung $ java -Dtrace=all awt.main A # alle Events $ java -Dtrace=none awt.main A # keine Dekodierung

Liste Programmieren Java Überblick

Informatik II. Aufgabe 1: Image Viewer ImageViewer.java

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Geschrieben von: Sonntag, den 18. September 2005 um 20:01 Uhr - Aktualisiert Donnerstag, den 01. Oktober 2009 um 23:39 Uhr

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

GRAFISCHE BENUTZERSCHNITTSTELLEN

Lesen Sie zuerst die Hinweise auf der Rückseite!

class BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahre

Layout Manager. Astrid Beck FHT Esslingen

GUI-Programmierung - Einführung

Transkript:

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 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) click move move Event thread Button Programm Thread Button Listener

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 addmouselistener(new MouseAdapter() { public void mousepressed(mouseevent e) { x1 = e.getx(); y1 = e.gety();... Ausgabe graphischer Elemente (Linien, Kreise, Vielecke, Polygone ) mit Objekt der Klasse Graphics Methoden: drawline, fillpolygon, drawoval, Konstruktor getgraphics()

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