Einstieg in die Informatik mit Java

Ähnliche Dokumente
Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

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

Eventhandling. Delegation model Eventhandler model

Einstieg in die Informatik mit Java

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Einführung in die OOP mit Java

Einführung in die Programmierung für NF. Übung 08

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

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

Einstieg in die Informatik mit Java

Java I Vorlesung 11 Graphische Oberflächen mit Swing

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

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

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

I. Grundlagen II. Ereignistypen III. Ereignisempfänger. Event-Handling (EH)

Objektorientierte Software-Entwicklung

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

Grafische Benutzeroberflächen

Vererbung, Polymorphie

Einführung in GUI-Programmierung. javax.swing

Einstieg in die Informatik mit Java

Session 1: Classes and Applets

Programmieren 2 Selbststudium Semesterwoche 4

Wiederholung. Klassenhierarchie:

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

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

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

Ereignisverarbeitung in Java

Einstieg in die Informatik mit Java

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

11. GUI-Programmierung mit SWING Überblick

Grafische Benutzeroberflächen

Graphical User Interfaces

NTB Druckdatum:

Grafische Benutzeroberflächen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einführung in GUI-Programmierung. javax.swing

GUI Programmierung mit JAVA Swing

Javakurs für Fortgeschrittene

Prüfung Softwareentwicklung II (IB)

Einstieg in die Informatik mit Java

Objektorientierte Programmierung

GUI Programmierung in Java

Institut für Informatik

Layout Manager. Astrid Beck FHT Esslingen

Programmierung Nachklausurtutorium

Das Interface ÁØ ÑÄ Ø Ò Ö verlangt die Implementierung

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

Einstieg in die Informatik mit Java

Einführung in die Informatik - Teil 4b - Zeichnen mit der Maus im JBuilder

Abstrakte Klassen, Interfaces

Einstieg in die Informatik mit Java

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

Transkript:

1 / 15 Einstieg in die Informatik mit Java Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik

Gliederung 2 / 15 1 Ereignis-Verwaltung 2 Layout-Typen GridLayout FlowLayout null Layout

Gliederung 3 / 15 1 Ereignis-Verwaltung 2 Layout-Typen GridLayout FlowLayout null Layout

Ereignis-Verwaltung 4 / 15 Eine Komponente wie ein Button, Scrollbar, Textfield kann mit Hilfe der Methode add() der Umgebung (z.b. dem Applet) hinzugefügt werden. Diese Komponente erzeugt Ereignisse (Mausereignisse werden vom Applet erzeugt), die über den Browser oder den appletviewer ausgelöst werden. Eine selbstdefinierte Klasse implementiert den entsprechenden Listener bzw. ist abgeleitet von entsprechenden Adaptern (s.u.), d.h. die Klasse implementiert z.b. den ActionListener und muss deswegen alle Methoden dieser Schnittstelle implementieren. Das bedeutet im Falle des MouseListeners, dass fünf Methoden überschrieben werden müssen.

5 / 15 Ereignis-Verwaltung Abhilfe Es werden spezielle Adapterklassen mit leeren Implementierungen definiert, z. B. MouseAdapter, von diesen können mit Hilfe der Vererbung eigene Klassen abgeleitet werden, wobei nur die nötigen Methoden überschrieben werden müssen. Die selbstdefinierte Klasse muss per addxyzlistener(...); bei der Komponente registriert werden, damit sie von Ereignissen benachrichtigt wird, d.h. damit die entsprechenden Methoden in ihr aufgerufen werden. Das Abmelden funktioniert analog mit removexyzlistener(...);

Ereignis-Verwaltung 6 / 15 Trennung von graphischer Schnittstelle und Ereignisverarbeitung Komponente Listener Button Ereignis selbstdef. Klasse implements ActionListener Versand an alle registrierten Listener

Beispiel Erstelle ein Zeichenprogramm, das Linien darstellt. Die Eingabe der Linien soll mit der Maus erfolgen. import java. a p p l e t. ; import java. awt. ; import java. awt. event. ; public class LinienMaus extends Applet { private i n t beginx, beginy, endx, endy ; public void i n i t ( ) { MausEreignis erg = new MausEreignis ( ) ; addmouselistener ( erg ) ; addmousemotionlistener ( erg ) ; setbackground ( Color. l i g h t G r a y ) ; setforeground ( Color. red ) ; public void p a i n t ( Graphics g ) { g. drawline ( beginx, beginy, endx, endy ) ; class MausEreignis extends MouseAdapter implements MouseMotionListener { public void mousepressed ( MouseEvent e ) { beginx = e. getx ( ) ; / / Methode 1 beginy = e. gety ( ) ; public void mousedragged ( MouseEvent e ) { endx = e. getx ( ) ; / / Methode 2 endy = e. gety ( ) ; r e p a i n t ( ) ; public void mousemoved ( MouseEvent e ) { / / Methode 3 7 / 15

8 / 15 Ereignis-Verwaltung Achtung Die Variante mit einer anonymer Klasse geht hier schlecht, weil der Name erg zweimal benötigt wird, d.h. Aufspalten in: addmouselistener ( new MouseAdapter ( ) { Methode 1 ) ; addmousemotionlistener ( new MouseMotionListener ( ) { Methode 2+3 ) ; addmousemotionlistener ( new MouseMotionAdapter ( ) { Methode 3 ) ;

Gliederung 9 / 15 1 Ereignis-Verwaltung 2 Layout-Typen GridLayout FlowLayout null Layout

Layout-Typen 10 / 15 Komponenten wie Buttons, Scrollbars usw. können durch den Methodenaufruf setlayout ( LayoutManager ) ; im Applet angeordnet werden. Im folgenden werden beispielhaft die Layoutmanager GridLayout, FlowLayout und null vorgestellt.

GridLayout 11 / 15 Beim Layoutmanager GridLayout werden die Komponenten eines Applets fortlaufend in einem rechteckigen Gitter angeordnet, wobei jedes Rechteck des Gitters genau eine Komponente erhält. Beispiel Anordnung von sechs Buttons in drei Reihen und zwei Spalten. import java. awt. ; import java. a p p l e t. Applet ; public class ButtonGrid extends Applet { public void i n i t ( ) { setlayout (new GridLayout ( 3, 2 ) ) ; add (new Button ( 1 ) ; add (new Button ( 2 ) ; add (new Button ( 3 ) ; add (new Button ( 4 ) ; add (new Button ( 5 ) ; add (new Button ( 6 ) ;

GridLayout 12 / 15 Erscheinungsbild im Applet 1 3 5 2 4 6

13 / 15 FlowLayout Beim Layoutmanager FlowLayout werden die Komponenten fließend von links nach rechts angeordnet. Sobald eine Komponente platzmäßig nicht mehr in eine Zeile passt, wird diese umgebrochen und die Komponente wird in die nächste Zeile gesetzt. Dabei werden die Komponenten in jeder Zeile zentriert. Achtung Dieser Layoutmanager ist das Standardlayout jedes Applets, d.h. es braucht nicht explizit durch setlayout() gesetzt werden!

14 / 15 null Layout Durch Setzen eines null Layouts müssen die Positionen und die Größe der Komponenten manuell durch die Methode setbounds ( i n t x, i n t y, i n t b r e i t e, i n t hoehe ) ; gesetzt werden. Damit erhält jede Komponente eine feste Position in der Appletumgebung, d.h. selbst bei Änderung der Fenstergröße des Applets bleiben die Komponenten an ihren festen Positionen. Achtung Im Gegensatz zum FlowLayout werden die Komponenten beim null-layout nicht umgebrochen!

null Layout 15 / 15 Beispiel import java. applet. ; public class LayBsp extends A p p l e t { Button b ; public void i n i t ( ) { setlayout ( null ) ; add ( b=new Button ( Test ) ) ; b. setbounds (10, 10, 100, 5 0 ) ;