Objektorientierte Programmierung



Ähnliche Dokumente
Objektorientierte Software-Entwicklung

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

GRAFISCHE BENUTZERSCHNITTSTELLEN

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Java I Vorlesung 11 Graphische Oberflächen mit Swing

GUI Programmierung mit JAVA Swing

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

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

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

Graphische Benutzungsoberflächen

Grundlagen der Programmierung APPLETS

2A Basistechniken: Weitere Aufgaben

Grafische Benutzeroberflächen mit Swing

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

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

Einstieg in die Informatik mit Java

Einführung in GUI-Programmierung. javax.swing

Benutzeroberflächen. Java Teil 4

Javakurs für Fortgeschrittene

NTB Druckdatum:

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

Swing Lernen am Code Teil 1

Institut für Informatik

Java Lab 2006/12/13 Client

Einführung in GUI-Programmierung. javax.swing

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

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

GUI Programmierung in Java

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

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

Einführung in die Programmierung

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

WPF Steuerelemente Listbox, ComboBox, ListView,

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

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

Probeklausur: Programmierung WS04/05

Funktionale und Objekt-Orientierte Programmierkonzepte

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling

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

Delegatesund Ereignisse

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

Grafische Benutzeroberflächen

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Mensch-Maschine-Interaktion

Softwarepraktikum: Enigma

Objektorientierte Programmierung. Kapitel 12: Interfaces

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Java: Vererbung. Teil 3: super()

Nachholklausur (6 ECTS) Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Matrikelnummer... Studienfach...

WindowLogger für MS-Terminalserver

GUI-Programmierung in Java

Grafische Benutzeroberflächen

4. AuD Tafelübung T-C3

...erinnern Sie sich? oopjs4b / kwhbkd4r

Objektorientierte Programmierung

Swing :Komponenten I (Teil 2)

Teil 1: Grundeigenschaften von Rechnern und Software

Schritt 1 - Ein Spielfeld

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

Programmieren in Java

U08 Entwurfsmuster (II)

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

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

Javakurs zu Informatik I. Henning Heitkötter

Grafische Benutzeroberflächen

Programmiertechnik 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

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

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Graphical User Interfaces

Java Projekt: Tic Tac Toe + GUI

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

Objektorientierte Softwareentwicklung

Objektorientierte Programmierung für Anfänger am Beispiel PHP

2015 conject all rights reserved

4.1 Wie bediene ich das Webportal?

Einführung in die Informatik Tools

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

7. Pakete Grundlagen der Programmierung 1 (Java)

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Installation, Einrichtung, Nutzung von PHOCA DOWNLOAD. Download-Links... 2

Transkript:

Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22

Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs: Javadocs Exkurs: JUnit Exkurs: Datenströme Java Dynamische Datenstrukturen (Kapitel 12 kurz, Vertiefung in Algorithmik) Vererbung (Kapitel 13) Pakete (Kapitel 18) Ausnahmebehandlung (Kapitel 19) Exkurs: Graphische Benutzeroberflächen (21.3) 2 / 22

Gliederung II Enumerationstypen (Kapitel 14) Generizität (Kapitel 15) Exkurs: Collection Typen (21.1) Threads (Kapitel 20) (wird ggf. vorgezogen) Schrittweise Verfeinerung (Kapitel 17) 3 / 22

Einleitung Graphische Benutzeroberflächen unter Java werden auf Basis der folgenden Klassen gebildet java.awt AWT (abstract window toolkit) enthält die Grundklassen und die javax.swing Swing enthält Fenster und Elemente für Benutzeroberflächen (GUI-Komponenten) Ziel: Grundelemente von AWT und Swing anschauen Realisierung eines Beispiels (Calculator) 4 / 22

GUI-Elemente Eine Swing GUI besteht aus den folgenden Komonenten: frames Fenstern, in denen panels eine oder mehrere Zeichenflächen dargestellt werden, die aus GUI-Komponenten wie Textfelder, Buttons, Checkboxen oder Radiobuttons Ziel ist es, eine kurze Einführung in erste zu geben. Weitere Informationen z.b. unter Java Swing Tutorial 5 / 22

Klassen für GUI-Elemente javax.swing.jframe Objekt, die das Fenster zur Verfügung stellt. javax.swing.jpanel Objekt, das mehrere GUI-Komponenten zusammenfasst javax.swing.jtextfield Textfeld javax.swing.jlabel fester Text (nicht editierbar) javax.swing.jbutton Button javax.swing.jcheckbox Checkbox javax.swing.jradiobutton Radiobutton... 6 / 22

GUI-Komponenten zu einem Panel gruppieren Wenn mehrere GUI-Komponenten zu einem Panel gruppiert werden sollen, muss man entscheiden wie. Dazu wählt man einen Layout-Manager, der die Gruppierung von GUI-Komponenten vornimmt Wir lernen hier zwei Layout-Manager kennen: FlowLayout, GridLayout. FlowLayout: Anordnung der Elemente hintereinander GridLayout(n,m): Anordnung der Elemente in einer n m-matrix BorderLayout, GridBagLayout,... siehe Java-API 7 / 22

Beispiele: Panel mit FlowLayout Wie sieht das erzeugte Panel aus? JPanel panel = new JPanel (new FlowLayout ( ) ) ; / / uses FlowLayout panel. add (new JButton ( "A" ) ) ; / / add buttons panel. add (new JButton ( "B" ) ) ; panel. add (new JButton ( "C" ) ) ; 8 / 22

Beispiele: Panel mit GridLayout Wie sieht das erzeugte Panel aus? JPanel panel = new JPanel (new GridLayout ( 2, 2 ) ) ; / / uses GridLay panel. add (new J T e x t F i e l d ( ) ) ; / / adds t e x t f panel. add (new J T e x t F i e l d ( ) ) ; panel. add (new JButton ( "A" ) ) ; / / add buttons panel. add (new JButton ( "B" ) ) ; 9 / 22

Panel in Frame einbinden Panel (JPanel) kann man in ein Fenster (JFrame) einhängen oder zusammen mit weiteren Komponenten und Panels in ein übergeordnetes Panel einfügen JFrame window = new JFrame ( ) ; / / creates a window window. setdefaultcloseoperation ( WindowConstants. EXIT_ON_CLOSE ) ; window. setcontentpane ( panel ) ; / / adds the panel to the window window. pack ( ) ; / / c a l c u l a t e s the p o s i t i o n of GUI window. s e t V i s i b l e ( true ) ; 10 / 22

Ereignisse Wenn der Benutzer mit der GUI interagiert, so lösen die GUI-Komponenten Ereignisse aus. Interagieren meint: Button drücken, Text eingeben, Checkbox auswählen,... Informationen über Ereignisse werden in Ereignisobjekten verwaltet. Für jede Ereignis-Art gibt es in Java ein Listener-Interface, das Methoden zur Behandlung des Ereignisses definiert. 11 / 22

Beispiele für Ereignisse und Listener ActionEvent (ActionListener) - Drücken eines Buttons WindowEvent (WindowListener) - z.b. Schliessen des Fensters DocumentEvent (DocumentListener) - Ändern in einem Textfeld, wie JTextField Java Swing Tutorial - Listener API Table 12 / 22

Interface ActionListener Methoden, die im Interface ActionListener deklariert werden: void actionperformed ( ActionEvent e ) Wird ausgeführt, wenn ein Ereignis auftritt. Eine minimale Implementierung ist: import javax. swing. ; import java. awt. ; import java. awt. event. ; class EventExample implements A c t i o n L i s t e n e r { public void actionperformed ( ActionEvent e ) { System. out. p r i n t l n ( " ActionEvent occurred " ) ; } } 13 / 22

GUI-Komponente registrieren Objekte der Klasse EventExample können nun auf ActionEvents reagieren. Nun muss man sie bei der Ereignisquelle, also der GUI-Komponente registrieren. D.h. wir registrieren den Listener bei einem Objekt myobj vom Typ JButton. button. addactionlistener ( myobj ) ; 14 / 22

Einfache GUI mit JButton und ActionListener class EventExample implements A c t i o n L i s t e n e r { J T e x t F i e l d t e x t = new J T e x t F i e l d ( ) ; JButton button = new JButton ( " Button " ) ; public EventExample ( ) { / / r e g i s t e r t h i s class as a L i s t e n e r f o r ActionEvents button. addactionlistener ( this ) ; / / create panel JPanel panel = new JPanel (new GridLayout ( 2, 1 ) ) ; panel. add ( t e x t ) ; panel. add ( button ) ; window. setdefaultcloseoperation ( WindowConstants. EXIT_ON_CLO / / create window, r e g i s t e r panel i n window JFrame window = new JFrame ( " A c t i o n L i s t e n e r " ) ; / / creates a window. setcontentpane ( panel ) ; / / adds the panel to the windo window. pack ( ) ; / / c a l c u l a t e s the p o s i t i o n of window. s e t V i s i b l e ( true ) ; }... } 15 / 22

Einfache GUI mit JButton und ActionListener public void actionperformed ( ActionEvent e ) { S t r i n g ausgabe = t e x t. gettext ( ) ; / / read of J T e x t F i e l d System. out. p r i n t l n ( " ActionEvent occurred, c u r r e n t Text i n J T e t e x t. settext ( " " ) ; / / w r i t e of J T e x t F i e l d } 16 / 22

Einfacher Eingabe von zwei Operanden in Textfelder Eingabe von ganzen Zahlen Operationen +, Operationen werden durch Buttons abgebildet Ergebnis wird in das erste Textfeld geschrieben Das zweite Textfeld wird gelöscht Frage: Welche GUI-Komponente brauchen wir, wie organisieren wir sie in Form von JPanels? 17 / 22

Deklaration GUI-Komponenten import javax. swing. ; import java. awt. ; import java. awt. event. ; public class C a l c u l a t o r implements A c t i o n L i s t e n e r { J T e x t F i e l d opd1 = new J T e x t F i e l d ( ) ; / / f i r s t operand J T e x t F i e l d opd2 = new J T e x t F i e l d ( ) ; / / second operand JButton plus = new JButton ( " + " ) ; / / + button JButton minus = new JButton ( " " ) ; / / button 18 / 22

Konstruktor baut panel zusammen, registriert Listener public C a l c u l a t o r ( ) { / / r e g i s t e r the c a l c u l a t o r as a l i s t e n e r f o r ActionEvents plus. addactionlistener ( this ) ; minus. addactionlistener ( this ) ; / / create the button panel JPanel buttons = new JPanel (new FlowLayout ( ) ) ; buttons. add ( plus ) ; buttons. add ( minus ) ; / / create a panel holding the two t e x t f i e l d s and the buttons JPanel panel = new JPanel (new GridLayout ( 3, 1 ) ) ; / / 3 l i n e s, 1 panel. add ( opd1 ) ; panel. add ( opd2 ) ; panel. add ( buttons ) ;... 19 / 22

Konstruktor fügt panel in window ein... / / create the main window JFrame frame = new JFrame ( " C a l c u l a t o r " ) ; frame. setdefaultcloseoperation ( WindowConstants. EXIT_ON_CLOSE ) frame. setcontentpane ( panel ) ; frame. pack ( ) ; frame. s e t V i s i b l e ( true ) ; } 20 / 22

Implementierung der Methode actionperformed / / r e a c t s to c l i c k s on the + or button public void actionperformed ( ActionEvent e ) { t r y { i n t val1 = I n t e g e r. p a r s e I n t ( opd1. gettext ( ) ) ; / / get value of i n t val2 = I n t e g e r. p a r s e I n t ( opd2. gettext ( ) ) ; / / get value of i n t res ; i f ( e. getsource ( ) == plus ) { / / + button c l i c res = val1 + val2 ; } else i f ( e. getsource ( ) == minus ) { / / button c l i c res = val1 val2 ; } else { res = 0; } opd1. settext ( S t r i n g. valueof ( res ) ) ; / / w r i t e r e s u l t opd2. settext ( " " ) ; / / c l e a r second } catch ( NumberFormatException ex ) { opd1. settext ( " B i t t e Zahl eingeben " ) ; } 21 / 22

Implementierung main -Methode public s t a t i c void main ( S t r i n g [ ] args ) { new C a l c u l a t o r ( ) ; } 22 / 22