GUI Events. Entstehen bei jeder Eingabe über die Bedienoberfläche (Maus bewegen, Maus Tasten drücken, Tastatur,...



Ähnliche Dokumente
Objektorientierte Software-Entwicklung

Transmission Control Protocol (TCP)

Einstieg in die Informatik mit Java

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Grundlagen der Programmierung APPLETS

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

GRAFISCHE BENUTZERSCHNITTSTELLEN

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

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

Lizenzen auschecken. Was ist zu tun?

Konfiguration von Exchange 2000 zum versenden und empfangen von Mails & Lösung des SEND after POP Problems

GUI Programmierung in Java

Swing Lernen am Code Teil 1

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Objektorientierte Programmierung

How-to: Webserver NAT. Securepoint Security System Version 2007nx

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

tentoinfinity Apps 1.0 EINFÜHRUNG

Virtual Private Network

Anleitung zur Nutzung des SharePort Utility

Konfigurationsanleitung Tobit David Fax Server mit Remote CAPI Graphical User Interface (GUI) Seite - 1 -

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Anleitung für das Einrichten eines SIP-Accounts (Registrierung einer VoiP- Nummer) im Softphone SJPhone für Windows Mobile

Kleines Handbuch zur Fotogalerie der Pixel AG

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

Tel.: Fax: Ein Text oder Programm in einem Editor schreiben und zu ClassPad übertragen.

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Kommunikations-Parameter

Web2Lead. Konfiguration

Live Update (Auto Update)

ARAkoll 2013 Dokumentation. Datum:

Installation der 4Dv12sql Software für Verbindungen zum T.Base Server

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

5.2 Neue Projekte erstellen

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Einrichten eines Microsoft Exchange-Account auf einem Android-System

Bauteilattribute als Sachdaten anzeigen

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

FastViewer Remote Edition 2.X

SMS-Versand in MACS Einrichtung des SMS-Versand Verwendung des SMS-Versandes Der SMS-Versand Empfängerfeld Empfänger-Rufnummer Inhalt der SMS

4D Server v12 64-bit Version BETA VERSION

Adressen der BA Leipzig

Programmierkurs Java

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Benutzerhandbuch MedHQ-App

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

DeltaVision Computer Software Programmierung Internet Beratung Schulung

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

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

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Eine Anwendung mit InstantRails 1.7

Einführung in IP, ARP, Routing. Wap WS02/03 Ploner, Zaunbauer

Objektorientierte Programmierung

-Versand an Galileo Kundenstamm. Galileo / Outlook

Psyprax GmbH. Netzwerk Installation unter XP. Wichtig für alle Netzwerkinstallationen: Psyprax GmbH

M-net -Adressen einrichten - Apple iphone

Programmieren I. Kapitel 15. Ein und Ausgabe

System-Update Addendum

Benutzung der LS-Miniscanner

efa elektronisches Fahrtenbuch im Berliner Ruder-Club

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Anwendungsprotokolle: HTTP, POP, SMTP

Effiziente Administration Ihrer Netzwerkumgebung

Übung - Konfigurieren einer Windows-XP-Firewall

Graphische Benutzungsoberflächen

Guide DynDNS und Portforwarding

1 Überblick. A-Z SiteReader Benachrichtigung.doc Seite 1 von 9

Anwenderdokumentation PersoSim

Collax PPTP-VPN. Howto

Hilfe zur Urlaubsplanung und Zeiterfassung

Grundlagen von Python

OUTLOOK (EXPRESS) KONFIGURATION POP3

ISi. ISi Technologie GmbH. MET -Schnittstelle zu Davis WeatherLink Version 5.7

Ein Ausflug zu ACCESS

Computeria Solothurn

- Öffnen Sie Ihren Internet-Browser und geben Sie nacheinander folgende Adressen ein:

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

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

Anleitung zur Mailumstellung Entourage

Inhalt. Inhalt Voraussetzungen Liegenschaften und Adressen auswählen Abgleich mit Internet-Office Dokumente...

1 Schritt: Auf der Seite einloggen und. ODER Zertifikat für VPN, wenn sie nur VPN nutzen möchten

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

Wie können Sie eine Client Lizenz wieder freigeben?

Programmieren in Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Leitfaden zur Nutzung von binder CryptShare

Anleitung Grundsetup C3 Mail & SMS Gateway V

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE

Wenn keine Verbindung zwischen den Computern besteht, dann bist du offline.

Transkript:

GUI Events Entstehen bei jeder Eingabe über die Bedienoberfläche (Maus bewegen, Maus Tasten drücken, Tastatur,...) Daten im Event: Koordinaten der Maus Zeitstempel Zustand der Maus Buttons Gedrückte Taste der Tastatur Gedrückte Modifier Tasten Chr. Hochberger, Inf2 ET/MT 111

Anwendungsstruktur Wenn Anwendung selber Events verarbeitet Bei jedem Event: Betroffenes Element der Oberfläche ermitteln (Durch Vergleich der Koordinaten mit denen der Elemente) Zustandsänderung an dem Element durchführen Führt zu schlechter Kohäsion (Code Duplizierung) Chr. Hochberger, Inf2 ET/MT 112

Objektorientiertes GUI Alle möglichen Elemente des GUI sind Objekte Eventbehandlung wird primär von Klassenbibliothek übernommen Für jedes Objekt kann ein Beobachter angemeldet werden (s. Entwurfsmuster Beobachter) Beobachter durch Interface definiert Ein Beobachter kann mehrere Objekte überwachen Chr. Hochberger, Inf2 ET/MT 113

GUI Elemente Typische Elemente Menu, Button, Checkbox, Slider, Textfeld, Kombobox Fortgeschrittene Elemente Tree, Table, Toolbar, Tooltip, Popupmenu Container Werden gebraucht, um normale Elemente aufzunehmen Panel, Split Pane, Layered Pane,... Chr. Hochberger, Inf2 ET/MT 114

Swing Anwendungen Startpunkt muss eine der folgenden Klassen sein: JFrame: Normales Window für Anwendungen JDialog: Einfacher Dialog mit Nachricht und einem oder zwei Buttons JWindow: Ebenfalls Window, aber mit mehr Möglichkeiten (weniger Unterstützung durch Swing) Erzeugen eines JFrame Objektes erzeugt Ein neues Window Einen Thread, der die Event Behandlung für dieses Window durchführt Chr. Hochberger, Inf2 ET/MT 115

JFrame Alle Windows können einen WindowListener (Interface) spezifizieren Methoden für Aktivieren/Deaktivieren (Fokus) De /Iconifizieren Aktives/Passives Schließen Erstes Öffnen Wird durch die Methode addwindowlistener() gesetzt Chr. Hochberger, Inf2 ET/MT 116

Container Behälter für alle GUI Elemente In verschiedenen Formen verfügbar JPanel, JSplitPanel, JTabbedPane,... Frame enthält bereits einen Container Kann mit getcontentpane() abgefragt werden Elemente werden mit add(...) hinzugefügt Container können wiederum Container enthalten Chr. Hochberger, Inf2 ET/MT 117

JButton Einfachstes GUI Element Erzeugen mit new Jbutton( Beschriftung ) Kann einem Container hinzugefügt werden Wie erfährt man, dass der Button gedrückt wurde? (genauer: Wann wurde er wieder gehen gelassen) Wieder über Beobachtermuster Button besitzt Methode addactionlistener(obj) obj muss Interface ActionListener implementieren Chr. Hochberger, Inf2 ET/MT 118

ActionListener Enthält nur die Methode actionperformed(actionevent e); Methode wird immer aufgerufen, wenn Element bedient wurde ActionEvent enthält zusätzliche Information: String getactioncommand() int getmodifiers() long getwhen() String ParamString() Chr. Hochberger, Inf2 ET/MT 119

Layouts Wo wird Element im Container angeordnet? Für jeden Container ist ein LayoutManager definiert Manager bestimmt Position im Container Eine Reihe von Layouts ist bereits vorgefertigt FlowLayout, BorderLayout, GridLayout, BoxLayout Zusätzliche Informationen beim Hinzufügen erforderlich Eigene Layouts können geschrieben werden (selten erforderlich) Chr. Hochberger, Inf2 ET/MT 120

Layouts (2) Container besitzt verschiedene add(...) Methoden add(component c) Hängt Komponente an das Layout an (am Ende) add(component c, int index) Fügt Komponente an der gewählten Stelle ein add(component c, Object Constraints) Fügt Komponente unter Einschränkungen in Layout ein Nach dem Hinzufügen muss validate() vom Container aufgerufen werden, damit die hinzugefügte Komponente erscheint Chr. Hochberger, Inf2 ET/MT 121

FlowLayout Komponenten werden von links nach rechts, von oben nach unten angeordnet (wie Text auf Seiten) Am Besten für Buttons geeignet Anordnung passt sich der Größe des Containers an Chr. Hochberger, Inf2 ET/MT 122

BorderLayout Layout wird fest in 5 Zonen eingeteilt: North, South, West, East, Center Center wird maximiert Add(Component c, int index) kann zum selektiven Hinzufügen benutzt werden Chr. Hochberger, Inf2 ET/MT 123

GridLayout Container wird in reguläres Gitter eingeteilt (z.b. 3 x 2) Wird beim Erzeugen des Layouts angegeben Kann nachträglich geändert werden Eine Dimension darf 0 sein Es werden dann soviele Zeilen oder Spalten angelegt, wie benötigt werden Chr. Hochberger, Inf2 ET/MT 124

BoxLayout Die Elemente werden entlang einer Dimension angelegt Es erfolgt kein Umbruch, wenn Box voll Wird häufig durch Box Klasse gekapselt Chr. Hochberger, Inf2 ET/MT 125

Menu Leiste Menus heute Standard in Fenster Umgebungen Menu in zwei Formen in Swing verfügbar Zum Fenster gehörend Fenster Menu besteht einzelnen Menus Als Popup Menu Popup Menu besteht aus einem Menu Fenster Menu wird über JFrame.setJMenuBar() gesetzt Menus können Untermenus enthalten Chr. Hochberger, Inf2 ET/MT 126

Menus Menu besteht aus MenuItems oder Menus (sind dann Untermenus) Einem MenuItem kann ein ActionListener zugefügt werden Chr. Hochberger, Inf2 ET/MT 127

LookAndFeel Verschiedene Aussehensvarianten verfügbar Metal LookAndFeel Java Swing spezifisch, sollte überall gleich aussehen Motif LookAndFeel an Motif(Unix) Klassenbibliothek angepasst Windows LookAndFeel entspricht nativen Windows Applikationen Mac LookAndFeel Gnome LookAndFeel Kann zur Laufzeit ausgewählt werden Chr. Hochberger, Inf2 ET/MT 128

Einfachere Listener WindowListener enthält sehr viele Methoden Implementierung aufwändig Einfacher durch Vererbung aus WindowAdapter zu erzeugen Enthält alle Methoden Methoden sind leer Klasse ist abstract, kann also nicht erzeugt werden Subklasse muss nur die Methoden überschreiben, die gebraucht werden Chr. Hochberger, Inf2 ET/MT 129

Noch einfachere Listener Subklasse von WindowAdapter kann noch einfacher erzeugt werden Wird als anonyme Klasse bezeichnet Kann auf Methoden der umschließenden Klasse zugreifen Class SimpleFrame {... JFrame f=new Jframe(); f.addwindowlistener(new WindowAdapter() { public windowclosing() { close() } } ); Chr. Hochberger, Inf2 ET/MT 130

Namensauflösung Wie werden Namen den IP Adressen zugeordnet? Domain Name System (DNS) Hierarchisches System von Nameservern Anfragen über Port 53 sowohl UDP (typisch, da schnell) als auch TCP (ungebräuchlich) Wenn ein Server die Antwort nicht weiß, sagt er, wo man die Antwort bekommen kann Chr. Hochberger, Inf2 ET/MT 131

Routing Spezielle IP Adressen: 127.0.0.1 Eigener Rechner (s.g. Loopback Device) 141.76.92.255 Broadcast Normale Rechner im Netz: Angabe eines Default Gateway Angabe einer Netzmaske Netzmaske wird Und verknüpft mit Zieladresse Ergebnis stimmt mit eigener Netzadresse überein? Ja, Rechner kann lokal ermittelt werden (z.b. ARP) Nein, Paket wird an Default Gateway geschickt Chr. Hochberger, Inf2 ET/MT 132

Byte und Character Streams Java unterscheidet Zeichen von anderen integralen Typen (byte, short, int) Verarbeitung von Texten: Reader und Writer Verarbeitung von Binärdaten: InputStream und OutputStream Verschiedenste Varianten verfügbar: File... Socket... Piped... String... Chr. Hochberger, Inf2 ET/MT 133

InputStream + OutputStream Schreiben und Lesen von Byte Daten InputStream Lesen von einzelnen Bytes, Byte Arrays, Teil Arrays Abfragen der verfügbaren Datenmenge Marken setzen und Marke wieder anfahren OutputStream Schreiben von Bytes, Byte Arrays, Teil Arrays "Flushen" des Streams (leeren der internen Puffer) Wie kann man andere Datentypen schreiben? Chr. Hochberger, Inf2 ET/MT 134

int Schreiben Wie wird ein int in einen Stream geschrieben? z.b. 0x436587A9 = 1130727337 Wert besteht offensichtlich aus 4 Bytes Mögliche Anordnung: 0x43, 0x65, 0x87, 0xA9 Big Endian Network Byteorder 0xA9, 0x87, 0x65, 0x43 Little Endian x86 Prozessoren Byte Order in C oder C++ von Rechner abhängig In Java einheitlich überall Network Byteorder Chr. Hochberger, Inf2 ET/MT 135

Data(In Out)putStream Stellen Methoden zur Verfügung, um alle integralen Datentypen zu schreiben/lesen (byte, short, int, long, float, double, char, boolean) Verwenden Entwurfsmuster Dekorierer new DataInputStream(InputStream s) new DataOutputStream(OutputStream s) Kann gleichzeitig mit Stream s verwendet werden (Achtung: Vor dem Wechsel unbedingt flush() aufrufen) Chr. Hochberger, Inf2 ET/MT 136

Object(In Out)putStream Wie kann man ein Objekt in einem Stream übertragen? Einfache Lösung: Das Objekt besitzt eine Methode, alle seine Felder in den Stream zu schreiben Problem: Was passiert mit Verweisen auf andere Objekte? Bessere Lösung: Object(In Out)Stream Besitzt Methode writeobject(object o) Chr. Hochberger, Inf2 ET/MT 137

Object Streams Java Laufzeitumgebung kann Struktur eines Objektes ermitteln Alle Felder werden automatisch in den Stream geschrieben/daraus gelesen (Ausnahme: transient deklarierte Felder) Objekt enthält Verweis auf andere Objekte: Referenziertes Objekt wird mit in den Stream geschrieben/daraus gelesen Zyklen werden erkannt Chr. Hochberger, Inf2 ET/MT 138

Netzwerk Funktionen in Java Trennung von TCP und UDP Verbindungen Socket, ServerSocket DatagramSocket Trennung von aktivem und passivem Verbindungsaufbau Spezielle Klasse für Internetadressen Chr. Hochberger, Inf2 ET/MT 139

InetAddress Klasse InetAddress dient als Factory zum Erzeugen von Instanzen Methoden: getbyaddress(byte[] adr) sucht nach IP Adresse getbyname(string name) sucht nach Name getallbyname(string name) sucht alle Adressen eines Hosts gethostname() den Namen dieser Adresse ermitteln getlocalhost() den eigenen Namen ermitteln Chr. Hochberger, Inf2 ET/MT 140

Aktiver + Passiver Verbindungsaufbau Vergleichbar mit Telefonieren Aktiv: Nummer wählen und warten bis Gegenstelle drangeht Passiv: Klingelzeichen hören und dann abnehmen Passiver Verbindungsaufbau erfordert Registrierung beim Betriebssystem Anwendung gibt bekannt, dass sie Verbindungen auf einem bestimmten Port annimmt Chr. Hochberger, Inf2 ET/MT 141

Client Sockets Aktiver Verbindungsaufbau Erzeugen einer Instanz von Socket Angabe des Kommunikationspartners new Socket(String name, int port) new Socket(InetAddress, int port) Verbindet noch nicht mit dem Partner Verbindung erst nach connect() vorhanden Durch close() wird die Verbindung beendet Chr. Hochberger, Inf2 ET/MT 142

Client Sockets (2) getinputstream() liefert InputStream Kann zum Einlesen der Daten vom Partner benutzt werden Warten auf eingehende Daten über read() möglich Alle read() Varianten warten, bis mindestens ein Zeichen vorhanden (solange blockiert read()) available() liefert die Anzahl verfügbarer Zeichen getoutputstream() liefert OutputStream Chr. Hochberger, Inf2 ET/MT 143

Server Sockets Werden durch Klasse ServerSocket dargestellt new ServerSocket(int port) new ServerSocket(int port, int backlog) Entgegennahme eines Verbindungswunsches mit accept() Blockiert, bis Verbindungswunsch vorliegt Liefert (verbundenen) Socket als Rückgabewert Mit close() wird die Bereitschaft zur Verbindungsannahme zurückgenommen Chr. Hochberger, Inf2 ET/MT 144

Datagram Sockets Dienen zum Empfangen und Versenden von UDP Paketen Erzeugen: new DatagramSocket() new DatagramSocket(int port) (nur in dieser Variante werden Pakete entgegengenommen) Senden (send()) und Empfangen (receive()) Nutzen Klasse DatagramPacket Chr. Hochberger, Inf2 ET/MT 145

DatagramPacket Zum Empfangen: new DatagramPacket(byte[] buf, int length) new DatagramPacket(byte[] buf, int offset, int length) Zum Senden: new DatagramPacket(byte[] buf, int length, InetAddress a, int port) new DatagramPacket(byte[] buf, int offset, int length, InetAddress a, int port) Chr. Hochberger, Inf2 ET/MT 146

DatagramPacket (2) Wie erzeugt/verarbeitet man das Byte Array? Hilfsklasse ByteArray(In Out)putStream New ByteArrayOutputStream(int size) Dann normal wie einen Stream Verwenden (z.b. mit Dekorierer DataOutputStream) Byte Array mit Methode tobytearray() erzeugen lassen Kann auch zum Konstruieren eines OutputStreamWriter benutzt werden Chr. Hochberger, Inf2 ET/MT 147