Das Java Event-Modell

Ähnliche Dokumente
GUI Programmierung in Java

Architekturbeschreibung Koala Editor

Ev. Kirche Hirschlanden

Tipps & Tricks im CRM

Erstellen eines Screenshot

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Verbinden. der Firma

support Kurzanleitung Kunde Version 5.1.1

1. Allgemein Speichern und Zwischenspeichern des Designs Auswahl der zu bearbeitenden Seite Text ergänzen Textgrösse ändern 3

Übersichtlichkeit im Dokumentenmanagement

GRAFISCHE BENUTZERSCHNITTSTELLEN

Internet Explorer Version 6

Java Projekt: Tic Tac Toe + GUI

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

IAWWeb PDFManager. - Kurzanleitung -

Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender FHNW, Services, ICT

tentoinfinity Apps 1.0 EINFÜHRUNG

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Handbuch zum Excel Formular Editor

Grundlagen der Programmierung APPLETS

Zwischenablage (Bilder, Texte,...)

Java: Vererbung. Teil 3: super()

Kurzanleitung MAN E-Learning (WBT)

Anleitung zur Aktivierung der neuen Lizenz an Ihren Rechnern

4. AuD Tafelübung T-C3

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Design von Benutzerschittstellen

Vergleich: Positionen der Word 2003-Befehle in Word

Professionelle Seminare im Bereich MS-Office

Installation OMNIKEY 3121 USB

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Meta-trader.de übernimmt die Programmierung Ihrer eigenen Handelsstrategie

Anleitung. Verschieben des alten -Postfachs (z.b. unter Thunderbird) in den neuen Open Xchange-Account

Hilfe zur Dokumentenverwaltung

SharePoint Demonstration

Graphische Benutzungsoberflächen

Die folgende Anleitung führt Sie Schritt für Schritt durch die notwendigen Prüfungen und Eingaben.

Kapitel 7 - Wägungen

Java-Tutorium WS 09/10

Übung 1. Explorer. Paint. Paint. Explorer

Robot Karol für Delphi

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Installation und Bedienung von vappx unter ios

Tipps und Tricks zu Netop Vision und Vision Pro

1. Allgemeines. Mit der Vertragsverwaltung können u.a.

Hilfe zur Urlaubsplanung und Zeiterfassung

Benutzerhandbuch - Elterliche Kontrolle

:: Anleitung Hosting Server 1cloud.ch ::

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

(Eine ausführliche Beschreibung der Batch-Umbenennen-Funktion finden Sie in der Anleitung [Link zur Anleitung m4 irfanview_batch].

Anleitung zur Excel-Anwendung Basisprämienberechnung

SMS4OL Administrationshandbuch

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Anleitung zur Nutzung der OFML Daten von Cascando in pcon.planner

Handbuch B4000+ Preset Manager

Anbinden der Visualisierung GILLES TOUCH (VNC)

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Installation und Bedienung von vappx unter Android

Kleines Handbuch zur Fotogalerie der Pixel AG

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Objektorientierte Programmierung

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Lizenzen auschecken. Was ist zu tun?

Erstellen von x-y-diagrammen in OpenOffice.calc

Übungen zur Softwaretechnik

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Meine ZyXEL Cloud. Tobias Hermanns V0.10

Installation Hardlockserver-Dongle

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

Individuelle Formulare

Leitfaden: geoport in FlowFact

teischl.com Software Design & Services e.u. office@teischl.com

-Virtuelle Jagdfliegerschule- Teamspeak Seite 1 von 6

!!! !!!!!!!!!!!!!!!!

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Multimedia Engineering II - Übung 2

VR-NetWorld Software - Wechseldatenträger

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Leitfaden für E-Books und Reader von Sony

Der Kalender im ipad

Konzepte der Informatik

Ein Projekt mit JavaFX erstellen

Anleitung über den Umgang mit Schildern

Kurzeinstieg in VR-Ident personal

Arbeitsgruppen innerhalb der Website FINSOZ e.v.

Anleitung zur Verwendung der VVW-Word-Vorlagen

Installationsanweisung zur Aktivierung für RadarOpus auf PC s ohne Internetzugang (MAC)

Popup Blocker/Sicherheitseinstellungen

Buchen eines Webinars

OpenMAP WEBDrive Konfiguration. Oxinia GmbH , Version 1

Objektorientierte Programmierung

Transkript:

Das Java Event-Modell Ereignisverarbeitung in Java/Swing Anwendungen Prof. Dr. Nikolaus Wulff

Ereignissverarbeitung GUI Anwendungen müssen auf die unterschiedlichsten Benutzereingaben reagieren: Tastatureingaben Drücken von normalen Tasten Beschleunigertasten Kombinationen, z.b. ALT-F3 Mauseingaben Mausbewegungen Mausgestiken Drag and Drop Drücken von Mausknöpfen Prof. Dr. Nikolaus Wulff Informatik III 2

Weitere Ereignisse Menu Auswahl Popup Menus Selektion(en) Fokus Ereignisse in einer Komponente Springen mit der Tab-Taste Spezielle Ereignisse der JList-, JTree, JTable Komponenten.... Prof. Dr. Nikolaus Wulff Informatik III 3

Java Events Zur Behandlung dieser unterschiedlichen Ereignisse verwendet die Java API eine Reihe von vordefinierten EventListenern, die an den entsprechenden Komponenten registriert werden können. Diese Listener implementieren eine bestimmte Schnittstelle, die dann von der jeweiligen Komponente aufgerufen wird, sobald ein entsprechendes Ereignis eintritt. Der Listener kann nun auf angemessene Weise kontextbezogen auf das Ereignis reagieren. Prof. Dr. Nikolaus Wulff Informatik III 4

MouseListener Klassendiagramm Interface Dummy Adapter Prof. Dr. Nikolaus Wulff Informatik III 5

Eigene MouseListener Eigene MouseListener werden erzeugt durch Ableitung vom MouseInputAdapter: class DeviceFlip extends MouseInputAdapter { public void mouseclicked(mouseevent evt) { if (evt.getbutton() == MouseEvent.BUTTON1 && evt.getclickcount() == 2) { flipat(evt.getx(), evt.gety()); } } protected void flipat(int x, int y) { DeviceView p = ctrl.findpaintableat(x, y); if (p!= null) { p.setflip(!p.getflip()); crtl.repaint(); } } // DeviceFlip Prof. Dr. Nikolaus Wulff Informatik III 6

Device Editor Der ElectronicDevice Editor zeigt einige Aspekte einer gut durchdachten Benutzerführung: Prof. Dr. Nikolaus Wulff Informatik III 7

GUI Design Muster Katalog Muster Interaction Style Window per Task Exploreable Interface Supplementary Window Step-by-Step Instructions Conversational Text, Little Language (Limited) Selection, Diabled Irrelevant Things Form Direct Manipulation Feedback Bedeutung Dem Kenntnisstand des Benutzers entsprechende Interaktionsform. Jedes Fenster erfüllt genau eine Aufgabe. Ermuntere zum Experimentieren. Benötigt ein Arbeitsablauf zusätzliche Informationen so öffne einen Dialog. Führe den Benutzer Schritt für Schritt durch schwierige Aufgaben. Interaktion durch direkte Texteingabe. Biete dem Benutzer kontextabhängige sinnvolle Auswahlalternativen. Gebe den Benutzer die Möglichkeit der strukturierten Eingabe. Visualisiere Objekte und erlaube graphische Manipulation. Rückkopplung ohne Behinderung im Arbeitsfluss. Prof. Dr. Nikolaus Wulff Informatik III 8

GUI Design Patterns Exploreable Interface Window per Task Little Language Conversational Text Supplementary Window Experte Interaction Style Step by Step Instruction Anfänger Direct Manipulation Form Selection Limited Selection Size Quelle: Mark Grand, Patterns in Java, Vol II Sachbearbeiter Feedback Disabled Irrelevant Things Prof. Dr. Nikolaus Wulff Informatik III 9

Window per Task Prof. Dr. Nikolaus Wulff Informatik III 10

Direct Manipulation Doppel- Click Prof. Dr. Nikolaus Wulff Informatik III 11

Ephemeral Feedback Click & Dragg Prof. Dr. Nikolaus Wulff Informatik III 12

InteractionStyle CrossWire Adjust Lines Prof. Dr. Nikolaus Wulff Informatik III 13

InteractionStyle: Grid Magnetic Grid Prof. Dr. Nikolaus Wulff Informatik III 14

Supplementary Window: Dialog Open Dialog Prof. Dr. Nikolaus Wulff Informatik III 15

Supplementary Window: Form Popup Formular Prof. Dr. Nikolaus Wulff Informatik III 16

Disable Irrelevant Things Disable Connections elect ode Create Mode enables R,L,C Show Selection Prof. Dr. Nikolaus Wulff Informatik III 17

Explorable Interface undo/redo possibilities Prof. Dr. Nikolaus Wulff Informatik III 18

Vielseitige Maus Fast alle vorliegenden Interaktionsmuster des DeviceEditors haben direkt oder indirekt mit Mausereignisverarbeitung zu tun: Auswahl per Button Malen/Erzeugung per Maus Move & Click Selektion per Maus Move Fadenkreuz per Maus Move Verbinden per Maus Click & Dragg Rotieren per Maus Doppel-Klick Kontextmenu per Maus Rechts-Klick Prof. Dr. Nikolaus Wulff Informatik III 19

Komplikationen Diese doch recht unterschiedlichen Gestiken und technischen Anforderungen in einem einzigen MouseListener zu implementieren bringt Probleme: Alle Reaktionen erfolgen nur auf eine aktuelle(x,y)- Mausposition und eventuell einer alten (x 0, y 0 )- Position. Es ist schwierig den Status genau zu verfolgen. Je nach selektierten Buttons und Kontext muss unterschiedlich reagiert werden. In einigen Fällen muss per XOR Operation der visuelle State gelöscht werden, wie viele verschiedene (x 0, y 0 ) Positionen sind nötig?. Eventuell ist ein Feedback an Buttons etc. notwendig Prof. Dr. Nikolaus Wulff Informatik III 20

Divide and Konqueror Die Kombinatorik und Vielfalt lässt sich durch eine Teile und Herrsche Strategie vereinfachen. Delegation der dynamischen Anteile an einen DeviceController entkoppelt den statischen vom dynamischen Anteil. Aufteilung in statische Anteile der View Buttons und Menus mit ihren ActionListenern Aufteilung in dynamische Anteile des Painters MouseListener und MouseMotionListener Prof. Dr. Nikolaus Wulff Informatik III 21

Mausereignisse MouseListener clicked pressed released entered exited moved dragged CrossWire X X X MouseMotion- Listener Creator X X Selector Flip X Remove Customize X Connect X >Visualize Tastenereignisse X X X Bewegungsereignisse Prof. Dr. Nikolaus Wulff Informatik III 22

Spezialisierte MouseListener Statt einen großen MouseListener zu implementieren, der dann lange if-else oder switchcase Konstrukte mit vielen internen State-Variablen erfordert werden mehrere kleine spezialisierte MouseListener entwickelt und am Controller registriert: ctrl.addmousemotionlistener(deviceselector); ctrl.addmousemotionlistener(deviceremover); ctrl.addmouselistener(devicecustomizer); ctrl.addmouselistener(deviceflip); ctrl.addmouselistener(devicecreator); ctrl.addmouselistener(deviceconnector); Prof. Dr. Nikolaus Wulff Informatik III 23

DeviceCustomizer class DeviceCustomizer extends MouseInputAdapter { DevicePopup popup; public void mousepressed(mouseevent evt) { if (evt.ispopuptrigger()) { int x = evt.getx(); int y = evt.gety(); Device d = ctrl.finddeviceat(x, y); if (d!= null) { setstatus("customize " + d); popup = new DevicePopup(); popup.setview(view); popup.setdevice(d); popup.init(); popup.show(view, x, y); } } } } // DeviceCustomizer Prof. Dr. Nikolaus Wulff Informatik III 24

Statusübergänge Häufig werden kontexbezogen bestimmte Buttons oder Menus freigeschaltet oder gesperrt. Hierbei handelt es sich meist um die Visualisierung eines inneren Status der Anwendung. Es ist wichtig diese Stati sauber zu modellieren. Hierzu dient das State-Transistion-Diagramm Die einzelnen Funktionale der Buttons etc. lassen sich z.b. mit Hilfe eines KV-Diagramms ermitteln. Das Zusammenspiel der Connect und Create ToggleButtons soll dies veranschaulichen. Prof. Dr. Nikolaus Wulff Informatik III 25

Status Diagramm Create Substate CO R L C Pick Connect Prof. Dr. Nikolaus Wulff Informatik III 26

Create/Connect KV Diagramm Die beiden ToggleButtons Connect und Create haben jeweils zwei interne Stati: Enabled und Selected. enabled!enabled enabled!enabled enabled!enabled Connect Prinzipielles Karnaugh-Diagramm für vier Variablen enabled!enabled!connect Create!Create Prof. Dr. Nikolaus Wulff Informatik III 27

Deadlock Falls beide Buttons disabled sind, so blockiert die Anwendung, es sind keine Eingaben möglich. enabled!enabled enabled!enabled enabled!enabled Connect enabled!enabled!connect kein Button reagiert mehr Create!Create Prof. Dr. Nikolaus Wulff Informatik III 28

Create KV Diagramm Bauteile werden im Create Modus mit disabled Connect Button erzeugt: enabled!enabled enabled!enabled keiner reagiert mehr enabled!enabled Connect Create Devices enabled!enabled!connect Create!Create Prof. Dr. Nikolaus Wulff Informatik III 29

Pick Devices Nach dem Wechsel zu!create können Devices im Pick Mode bearbeitet werden. enabled!enabled enabled!enabled enabled!enabled enabled!enabled Connect!Connect Select Devices Create!Create Prof. Dr. Nikolaus Wulff Informatik III 30

Connect Devices Der Connect Button ist im Pick Mode enabled. Wird er gedrückt so erfolgt der Wechsel in den Connect Mode und der Create/Pick Button wird disabled... enabled!enabled enabled!enabled enabled!enabled Connect Connect Devices enabled!enabled!connect Create!Create Prof. Dr. Nikolaus Wulff Informatik III 31

Übersicht behalten Gerade bei komplexen GUI Oberflächen ist es wichtig die Übersicht zu behalten. Die graphische Representation der Buttons korreliert nicht immer 1:1 mit dem inneren Status des Programms. Dies kann leicht zu Inkonsistenz führen. Hier hilft eine kritische Prüfung mit dem Status- und KV- Diagramm. Prof. Dr. Nikolaus Wulff Informatik III 32