Liste Programmieren Java Überblick

Ähnliche Dokumente
11. GUI-Programmierung mit SWING Überblick

Objektorientierte Software-Entwicklung

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

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

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

GRAFISCHE BENUTZERSCHNITTSTELLEN

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

Objektorientierte Programmierung

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

NTB Druckdatum:

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

Einführung in Swing. Graphical User Interface

Institut für Informatik

Softwarepraktikum: Enigma

JAVA Oberflächen mit Swing

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

Swing Lernen am Code Teil 1

Grundlagen der Programmierung APPLETS

Programmieren 2 Selbststudium Semesterwoche 4

...erinnern Sie sich? oopjs4b / kwhbkd4r

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

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

GUI-Programmierung in Java

Ein Manager mit CardLayout layout/cards.java

Benutzeroberflächen. Java Teil 4

GUIs in Java und ihre Programmierung

AWT. Einfache AWT-Anwendung. Swing. Vorlesung 1. Handout S. 2. import java. awt. * ;

Einstieg in die Informatik mit Java

Swing :Komponenten I (Teil 2)

6. Objektorientiertes Design

Graphische Benutzungsoberflächen

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Grafische Benutzeroberflächen mit Swing

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

Programmieren mit Swing

GUI. Programmiermethodik. Eva Zangerle Universität Innsbruck

Einbindung der Tastatur

Vorlesung 13. Sitzung Grundlegende Programmiertechniken

Techniken der Projektentwicklung

Objektorientierte und Funktionale Programmierung SS 2014

2. Programmierung von Benutzungsschnittstellen

04 - Actions. Actions

Teil 5: Benutzeroberflächen 5.2 Einführung GUI-Programmierung Prof. Dr. Max Mühlhäuser FG Telekooperation TU Darmstadt

Ausgewählte Implementierungsprobleme

Swing Grundlagen. Andre Eichmann

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

Probeklausur: Programmierung WS04/05

Dr. Monika Meiler. Inhalt

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Vorlesung Informatik II

Kapitel 10. Event Handling 10.1 MVC

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Objektorientierte Softwareentwicklung

Probeklausur: Programmierung WS04/05

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Aufbau einer Swing-Applikation

> GUI Programmierung in Java Teil 2

Programmierkurs. 11. Vorlesung. Sven Mallach. 13. Januar Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 60

SWING. DVG2-09 -Swing 1

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

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

GUI Programmierung in Java

11. GUI-Programmierung mit SWING Überblick

Kurs OPR. Objektorientierte Programmierung

Teil 1: Grundeigenschaften von Rechnern und Software

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.

von Anja Austermann Drag and Drop

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

Mensch-Maschine-Interaktion

2A Basistechniken: Weitere Aufgaben

Ansonsten VIEL SPAß! Nicholas Ohs (GK 11 IF 2)

Einstieg in die Informatik mit Java

Java Lab 2006/12/13 Client

Software Engineering Entwurfsmuster (update: 11.6.)

Dr. Monika Meiler. Inhalt

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Objekt-Orientierte Programmierung

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Graphische Programmierung: GUIs: graphical user interfaces

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

Grundlagen der Informatik für Ingenieure I. 8. AWT - Abstract Window Toolkit Teil 1

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Informatik I Eprog HS10

Algorithmen und Datenstrukturen

Liste Programmieren Java Überblick

Drucken soll nur das Panel, nicht der ganze Rahmen gedruckt werden.

Grafik - wozu? GUI Grafische Benutzungsschnittstellen. Gehört zum Standardumfang des JDK. 2 Varianten: AWT und Swing

Transkript:

Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe 10 Threads 11 GUI-Programmierung mit SWING Prof. Dr. Björn Dreher Liste Programmieren - Java 441 Liste Programmieren Java Überblick: 11. GUI-Programmierung mit SWING 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing Komponenten Prof. Dr. Björn Dreher Liste Programmieren - Java 442

11. GUI-Programmierung mit SWING Überblick: 11.1. Einführung 11.1.2 Ein erstes Swing-Programm Prof. Dr. Björn Dreher Liste Programmieren - Java 443 Erstellen von graphischen Benutzerschnittstellen Graphical User Interface: GUI Völlig andere Programmstruktur Nicht einfach ein Hauptprogramm, das Methoden verschiedener Objekte der Reihe nach aufruft Auch nicht nur ein Menüsystem Programm wird durch Benutzerinteraktion gesteuert Art und Reihenfolge nicht im Detail planbar Ereignisgesteuerte Anwendung Tastatureingabe, Mausklick, Realisiert durch sog. Model-View-Controller Anwendungsarchitektur Prof. Dr. Björn Dreher Liste Programmieren - Java 444

Model-View-Controller (MVC) Anwendungsarchitektur Realisierbar durch Observer Design-Pattern Beobachter beobachtet eine Sache Registriert sich bei der Sache Wird von Änderungen informiert Verschieden Visualisierungen derselben Sache sind möglich Verschiedene Views desselben Modells Soweit auch als Document-View Architektur bekannt Microsoft Foundation Classes (MFC) Prof. Dr. Björn Dreher Liste Programmieren - Java 445 MVC Rollen Model: Repräsentiert internen Zustand eines Objektes Speichert diesen Stellt Methoden zum Ändern und Abfragen zur Verfügung View: Stellt Zustand des Modells dar Benutzt dazu die Methoden des Modells Controller: Reagiert auf Interaktion mit der graphischen Oberfläche Aktualisiert den Zustand des Modells Sorgt dafür, dass View aktualisiert wird Ruft ggf. anderen View auf Prof. Dr. Björn Dreher Liste Programmieren - Java 446

MVC Architektur Benutzereingaben Bildschirmausgabe Änderung der Darstellung Controller View Änderungen in der Benutzerschnittstelle Veränderung von Daten Model Zugriff auf Daten zur Visualisiereung Prof. Dr. Björn Dreher Liste Programmieren - Java 447 MVC Realität View und Controller sind meistens eng miteinander verbunden Trennung würde Entwurf von visuellen Komponenten komplizieren Hätte höheren Kommunikationsaufwand zwischen View und Controller zur Folge Daher in der Praxis: Model und View sind eine Komponente, d.h. eine Klasse Basisklasse JComponent, delegiert an ComponentUI Swing-Komponente kann aber (im Innern) noch weitere Bestandteile besitzen Ihr eigenes Modell Prof. Dr. Björn Dreher Liste Programmieren - Java 448

Komponenten Beispiele JLabel Konstanter Text oder Graphik, nicht editierbar JTextField Texteingabefeld; kann auch Text nur darstellen JButton Knopf zum Anklicken: Löst ein bestimmtes Ereignis (event) aus JCheckBox Kann selektiert oder nicht selektiert sein JComboBox Drop-down Liste von Einträgen, von denen einer oder mehrere ausgewählt werden können. Doppelklick erzeugt ein Action Ereignis (action event) Prof. Dr. Björn Dreher Liste Programmieren - Java 449 Komponenten Beispiele (fortgesetzt) JList Normale Liste von Einträgen, von denen einer oder mehrere ausgewählt werden können. Doppelklick erzeugt ein Action Ereignis (action event) JPanel Ein Container, der Swing-Komponenten aufnehmen kann Prof. Dr. Björn Dreher Liste Programmieren - Java 450

Packages Haupt Swing-Package javax.swing Sog. lightweight components Vollständig in Java geschrieben Frühere Generation von GUI-Komponenten: Abstract Windowing Toolkit (AWT) java.awt Enge Kopplung an graphische Oberfläche der Betriebssystem- Plattform Darstellung abhängig von dieser Sog. heavyweight components Delegieren an zugehörige Komponente des Packages java.awt.peer, um mit Betriebssystem-Plattform zu wechselwirken Swing Komponenten erben trotzdem oft von AWT Komponenten Prof. Dr. Björn Dreher Liste Programmieren - Java 451 Vererbungshierarchie java.lang.object Gemeinsame Methoden für alle GUI Komponenten, z.b. paint(), repaint(), update() java.awt.component java.awt.container Funktionalität für Collection von zusammengehörigen Komponenten, z.b. JPanel. Methoden add() und setlayout() javax.swing.jcomponent Basisklasse fast aller Swing Komponenten Prof. Dr. Björn Dreher Liste Programmieren - Java 452

11. GUI-Programmierung mit SWING Überblick: 11.1. Einführung 11.1.2 Ein erstes Swing-Programm Prof. Dr. Björn Dreher Liste Programmieren - Java 453 11.1.2 Ein erstes Swing Programm Swing Komponente JLabel // Java core packages import java.awt.*; import java.awt.event.*; // Java extension packages import javax.swing.*; public class LabelTest extends JFrame { private JLabel label1, label2, label3; // set up GUI in constructor public LabelTest() { super( "Testing JLabel" ); // call JFrame constructor // get content pane and set its layout Container container = getcontentpane(); container.setlayout( new FlowLayout() ); Behälter für visuelle Komponenten des Frames Prof. Dr. Björn Dreher Liste Programmieren - Java 454

11.1.2 Ein erstes Swing Programm Swing Komponente JLabel (fortgesetzt) // JLabel constructor with a string argument label1 = new JLabel( "Label with text" ); label1.settooltiptext( "This is label1" ); container.add( label1 ); // JLabel constructor with string, Icon and // alignment arguments Icon bug = new ImageIcon( "bug1.gif" ); // oder.png oder.jpg label2 = new JLabel( "Label with text and icon", bug, SwingConstants.LEFT ); label2.settooltiptext( "This is label2" ); container.add( label2 ); settooltiptext() geerbt von JComponent Füge zum Behälter hinzu Prof. Dr. Björn Dreher Liste Programmieren - Java 455 11.1.2 Ein erstes Swing Programm Swing Komponente JLabel (fortgesetzt) // JLabel constructor no arguments label3 = new JLabel(); // change JLabel's properties label3.settext("label with icon and text at bottom"); label3.seticon( bug ); label3.sethorizontaltextposition(swingconstants.center); label3.setverticaltextposition(swingconstants.bottom); label3.settooltiptext("this is label3"); container.add( label3 ); setsize( 275, 170 ); setvisible( true ); } Relativ zum Image Setze Eigenschaften des JFrames Prof. Dr. Björn Dreher Liste Programmieren - Java 456

11.1.2 Ein erstes Swing Programm Swing Komponente JLabel (fortgesetzt) // execute application public static void main( String args[] ) { LabelTest application = new LabelTest(); } application.setdefaultcloseoperation(jframe.exit_on_close ); } // end class LabelTest Was passiert beim Schließen des JFrames? Prof. Dr. Björn Dreher Liste Programmieren - Java 457 11. GUI-Programmierung mit SWING Überblick: 11.1. Einführung 11.1.2 Ein erstes Swing-Programm Prof. Dr. Björn Dreher Liste Programmieren - Java 458

GUIs sind Ereignis getrieben (event driven) Wenn Benutzer mit dem GUI wechselwirkt, werden Ereignisse erzeugt Texteingabe, Mausklick, Das Ereignis wird dem Programm zugestellt Vererbungshierarchie von Events im Package java.awt.event Swing-spezifische Events in javax.swing.event Prof. Dr. Björn Dreher Liste Programmieren - Java 459 Vererbungshierarchie von AWT-Events java.lang.object java.util.eventobject java.awt.awtevent Alle diese Events definiert im Package java.awt.event ActionEvent ComponentEvent ItemEvent AdjustmentEvent ContainerEvent InputEvent FocusEvent PaintEvent WindowEvent KeyEvent MouseEvent Prof. Dr. Björn Dreher Liste Programmieren - Java 460

Drei Beteiligte: Event Quelle GUI Komponente, mit der der Benutzer wechselwirkt Hat Liste der registrierten Event Listener, um diese von Ereignis zu informieren Event Listener können sich bei ihr registrieren Event Objekt Kapselt Informationen über das Ereignis u.a. Referenz auf die Event Quelle Event Listener Erhält das Event Objekt von Event Quelle zugestellt Reagiert auf das Ereignis Prof. Dr. Björn Dreher Liste Programmieren - Java 461 Aufgaben des Programmierers: Für die GUI Komponente muss ein event listener registriert werden Eine event handling method muss implementiert werden Auch event handler genannt Ein event listener ist ein Objekt einer Klasse, die eine oder mehrere Methoden enthält, die event-listener Interfaces aus den Packages java.awt.event oder javax.swing.event implementieren Viele der Interfaces sind für Swing- und AWT-Komponenten anwendbar Prof. Dr. Björn Dreher Liste Programmieren - Java 462

Vererbungshierarchie von AWT-Listener Interfaces java.util.eventlistener Alle diese Interfaces definiert im Package java.awt.event ActionListener ComponentListener ItemListener AdjustmentListener ContainerListener KeyListener FocusListener TextListener WindowListener MouseListener MouseMotionListener Prof. Dr. Björn Dreher Liste Programmieren - Java 463 Event Listener Objekt Hört auf bestimmte Typen von Events, die von Event Quelle erzeugt wurden Strenge Typisierung Event Handler ist eine Methode, die auf das Ereignis hin aufgerufen wird Event Listener Interface spezifiziert eine oder mehrere Event-Handling Methoden Müssen in der Event Listener Klasse implementiert werden Delegation Event Model Verarbeitung des Ereignisses an ein bestimmtes Objekt (den Listener) delegiert (Observer Pattern) Enter Taste in JTextField gedrückt Methode actionperformed des registrierten Listeners wird aufgerufen Prof. Dr. Björn Dreher Liste Programmieren - Java 464

Klassendiagramm JTextField # listenerlist: EventListenerList + addactionlistener(l: ActionListener) + removeactionlistener(l: ActionListener) # fireactionperformed() + getstate() listeners 0..* for all l in listenerlist { l.actionperformed( e: ActionEvent) } ActionListener actionperformed(e: ActionEvent) handlerstate TextFieldHandler handlerstate = e.getsource().getstate() actionperformed(e: ActionEvent) Prof. Dr. Björn Dreher Liste Programmieren - Java 465 Quellcode // Java core packages import java.awt.*; import java.awt.event.*; // Java extension packages import javax.swing.*; Referenzen zu 3 Text- Feldern und einem Password-Feld public class TextFieldTest extends JFrame { private JTextField textfield1, textfield2, textfield3; private JPasswordField passwordfield; // set up GUI in Constructor public TextFieldTest() { super( "Testing JTextField and JPasswordField" ); Container container = getcontentpane(); container.setlayout( new FlowLayout() ); Layout für ContentPane Prof. Dr. Björn Dreher Liste Programmieren - Java 466

Quellcode (fortgesetzt) // construct textfield with default sizing textfield1 = new JTextField( 10 ); container.add( textfield1 ); 10 Zeichen breit // construct textfield with default text textfield2 = new JTextField( "Enter text here" ); container.add( textfield2 ); // construct textfield with default text and // 20 visible elements and no event handler for editing textfield3 = new JTextField( "Uneditable text field", 20 ); textfield3.seteditable( false ); container.add( textfield3 ); // construct passwordfield with default text passwordfield = new JPasswordField( "Hidden text" ); container.add( passwordfield ); Inhalt nicht editierbar Prof. Dr. Björn Dreher Liste Programmieren - Java 467 Quellcode (fortgesetzt) Ein ActionListener: s. unten // register event handlers TextFieldHandler handler = new TextFieldHandler(); textfield1.addactionlistener( handler ); textfield2.addactionlistener( handler ); textfield3.addactionlistener( handler ); passwordfield.addactionlistener( handler ); setsize( 325, 100 ); setvisible( true ); } Registriere ActionListener Prof. Dr. Björn Dreher Liste Programmieren - Java 468

Quellcode (fortgesetzt) // execute application public static void main( String args[] ) { TextFieldTest application = new TextFieldTest(); application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); } Prof. Dr. Björn Dreher Liste Programmieren - Java 469 Quellcode (fortgesetzt) Ein ActionListener // private inner class for event handling private class TextFieldHandler implements ActionListener { // process text field events public void actionperformed( ActionEvent event ) { String string = ""; Event Handler // user pressed Enter in JTextField textfield1 if ( event.getsource() == textfield1 ) string = "textfield1: " + event.getactioncommand(); // user pressed Enter in JTextField textfield2 else if ( event.getsource() == textfield2 ) string = "textfield2: " + event.getactioncommand(); Liefert Text in dem Feld Prof. Dr. Björn Dreher Liste Programmieren - Java 470

Quellcode (fortgesetzt) } // user pressed Enter in JTextField textfield3 else if ( event.getsource() == textfield3 ) string = "textfield3: " + event.getactioncommand(); // user pressed Enter in JTextField passwordfield else if ( event.getsource() == passwordfield ) { JPasswordField pwd = ( JPasswordField ) event.getsource(); string = "passwordfield: " + new String( pwd.getpassword() ); } Liefert Passwort JOptionPane.showMessageDialog( null, string ); } // end private inner class TextFieldHandler } // end class TextFieldTest Pop-Up Fenster Prof. Dr. Björn Dreher Liste Programmieren - Java 471 Das Frame Prof. Dr. Björn Dreher Liste Programmieren - Java 472