1DVG3 - eigene AWT-Komponenten Entwicklung eigener AWT-Komponenten.

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
Anwendungen des OODM auf die ADB / NDB
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Zusammenfassung des Kapitels 8
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Binäre Bäume Richard Göbel.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Objektorientierte Programmierung JDK-Klassenbibliothek
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
1DVG3 - Paint Teil 2 Paint Teil2. DVG3 - Paint Teil 2 2 Weitere Entwicklungen Hinzufügen verschiedener Werkzeuge: Punkte Linien Rechtecke, Rechtecke mit.
Modulare Programmierung
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG A bstract W indow T oolkit. DVG Als standardisierte portable Grafikschnittstelle existiert in JAVA das Package AWT - Abstract Window.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
08-GraphikImplementierung Implementierung der Graphik in EMMA301Paint.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Equals, Hashcode und CompareTo Micha Kessler
EPROG Tutorium #3 Philipp Effenberger
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
 Präsentation transkript:

1DVG3 - eigene AWT-Komponenten Entwicklung eigener AWT-Komponenten

DVG3 - eigene AWT-Komponenten 2 Warum eigene AWT-Komponenten? Vorhanden AWT-Komponenten erfüllen nicht die gestellten Anforderungen. Z.B.: FileNameFilter in FileDialog funktioniert nicht richtig. Keine Vorschau im FileDialog möglich. Keine Komponente zur Wahl von Farben oder zur Formatierung von Texten vorhanden. In einem Projekt werden häufig komplexere Komponenten benötigt. Einheitliche Erscheinung der Teile eines Projektes soll gewährleistet werden. Arbeitsteilung bei der Bearbeitung von Projekten soll gefördert werden. Experten für GUIs und Experten für Numerik sollen ein gemeinsames Projekt erstellen.

DVG3 - eigene AWT-Komponenten 3 Eigenschaften von AWT-Komponenten Gestaltung der Komponente Kommunikation mit anderen Objekten durch Events und/oder Methoden. Z.B.: Checkbox Event: ItemEvent Methode: getState() Label Methoden: getLabel() Button Event: ActionEvent Erzeugung von spezifischen Events Komponente erlaubt die Registrierung von Listenern Komponente ruft die entsprechenden Methoden der registrierten Listener auf Komponente kann selbst auf Events reagieren um bestimmte Funktionen zu realisieren

DVG3 - eigene AWT-Komponenten 4 Bestandteile Komponentenspezifisch Implementierung der Komponentenklasse Für evtl. mehrere Komponenten Event Listener Komponentenübergreifend Multicaster für alle Events und Listener

DVG3 - eigene AWT-Komponenten 5 Funktionsweise von AWT-Komponenten Programm AWT-KomponenteErzeugt AWT-Komponente Erzeugt Listener-Objekt Listener-Objekt registriert Listener-Objekt bei der AWT-Komponente Ereignis registrieren benachrichtigen

DVG3 - eigene AWT-Komponenten 6 ColorEvent Herangehen 1.Beispiel aus AWT analysieren, Basisklassen beachten 2.Basisklassen erweitern 3.Eigene Klasse entwickeln

DVG3 - eigene AWT-Komponenten 7 Beispiel: ActionEvent package java.awt.event; import java.awt.AWTEvent; import java.awt.Event; public class ActionEvent extends AWTEvent { public static final int SHIFT_MASK= Event.SHIFT_MASK; public static final int CTRL_MASK= Event.CTRL_MASK; public static final int META_MASK= Event.META_MASK; public static final int ALT_MASK= Event.ALT_MASK; public static final int ACTION_FIRST= 1001; public static final int ACTION_LAST= 1001; public static final int ACTION_PERFORMED= ACTION_FIRST; String actionCommand; int modifiers; private static final long serialVersionUID = L; public ActionEvent(Object source, int id, String command) { this(source, id, command, 0); }

DVG3 - eigene AWT-Komponenten 8 public ActionEvent(Object source, int id, String command, int modifiers) { super(source, id); this.actionCommand = command; this.modifiers = modifiers; } public String getActionCommand() { return actionCommand; } public int getModifiers() { return modifiers; } public String paramString() { String typeStr; switch(id) { case ACTION_PERFORMED: typeStr = "ACTION_PERFORMED"; break; default: typeStr = "unknown type"; } return typeStr + ",cmd="+actionCommand; } }

DVG3 - eigene AWT-Komponenten 9 Basisklasse: AWTEvent package java.awt; import java.util.EventObject; import java.awt.event.*; public abstract class AWTEvent extends EventObject { private transient long data; protected int id; protected boolean consumed = false; public final static long COMPONENT_EVENT_MASK = 0x01; public final static long CONTAINER_EVENT_MASK = 0x02; public final static long FOCUS_EVENT_MASK = 0x04; public final static long KEY_EVENT_MASK = 0x08; public final static long MOUSE_EVENT_MASK = 0x10; public final static long MOUSE_MOTION_EVENT_MASK = 0x20; public final static long WINDOW_EVENT_MASK = 0x40; public final static long ACTION_EVENT_MASK = 0x80; public final static long ADJUSTMENT_EVENT_MASK = 0x100; public final static long ITEM_EVENT_MASK = 0x200; public final static long TEXT_EVENT_MASK = 0x400; public final static long INPUT_METHOD_EVENT_MASK = 0x800; final static long INPUT_METHODS_ENABLED_MASK = 0x1000;

DVG3 - eigene AWT-Komponenten 10 public final static int RESERVED_ID_MAX = 1999; public AWTEvent(Event event) { this(event.target, event.id); } public AWTEvent(Object source, int id) { super(source); this.id = id; switch(id) { case ActionEvent.ACTION_PERFORMED: case ItemEvent.ITEM_STATE_CHANGED: case AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED: case TextEvent.TEXT_VALUE_CHANGED: consumed = true; break; default: } }

DVG3 - eigene AWT-Komponenten 11 Für jede Eventgruppe existiert eine Maske. Diese dient zum gezielten aktivieren bzw. deaktivieren der Eventgruppe. Wird bei der Entwicklung von eigenen Komponenten benötigt (3. Variante der Eventbehandlung). Maske enthält ein bit=1 alle anderen =0. Bei einer Erweiterung muss für jede neue Eventgruppe eine neue Maske definiert werden. Z.B.: public final static long COLOR_EVENT_MASK = 0x2000; Jeder Event erhält einen eigenen ID. public final static int RESERVED_ID_MAX = 1999; Für eigene Events können IDs ab 2000 benutzt werden. Wir erhöhen die Anzahl der reservierten IDs um 2000 und benutzen für TFHEvents die IDs Konstruktoren müssen in der abgeleiteten Klasse nachgebildet werden.

DVG3 - eigene AWT-Komponenten 12 Erweiterung: TFHEvent package tfh.awt; import java.awt.AWTEvent; public abstract class TFHEvent extends AWTEvent { public final static long COLOR_EVENT_MASK = 0x2000; public final static int RESERVED_ID_MAX = AWTEvent.RESERVED_ID_MAX+2000; public TFHEvent(Event event) { super(event); } public TFHEvent(Object source, int id) { super(source,id); } }

DVG3 - eigene AWT-Komponenten 13 Neuer TFHEvent: ColorEvent Als Daten muss die Farbe, d.h. ein Color-Objekt gespeichert werden. Für das gespeicherte Color-Objekt muss eine Abfrage-Methode vorhanden sein (analog MouseEvent.getX()). Zwei Varianten (IDs): 1.Farbe wird temporär geändert (analog MouseMoved). COLOR_CHANGED 2.Farbe wird ausgewählt (analog MouseClicked). COLOR_SELECTED

DVG3 - eigene AWT-Komponenten 14 package tfh.awt.event; import tfh.awt.TFHEvent; import java.awt.AWTEvent; import java.awt.Color; public class ColorEvent extends TFHEvent { public static final int COLOR_FIRST= AWTEvent.RESERVED_ID_MAX+1; public static final int COLOR_LAST= AWTEvent.RESERVED_ID_MAX+2; public final static int COLOR_CHANGED= COLOR_FIRST; public final static int COLOR_SELECTED= COLOR_FIRST+1; Color color; public ColorEvent(Object source, int id, Color color) { super(source, id); this.color = color; }

DVG3 - eigene AWT-Komponenten 15 public Color getColor() { return color; } public String paramString() { String typeStr; switch(id) { case COLOR_CHANGED: typeStr = "COLOR_CHANGED"; break; case COLOR_SELECTED: typeStr = "COLOR_SELECTED"; break; default: typeStr = "unknown type"; } return typeStr + ",color="+color; } }

DVG3 - eigene AWT-Komponenten 16 Interface: ColorListener Beschreibt die Methoden, die aufgerufen werden müssen um die ColorEvnts zu behandeln. Zwei Varianten: 1.COLOR_CHANGED: colorChanged(ColorEvent e) 2.COLOR_SELECTED: colorSelected(ColorEvent e)

DVG3 - eigene AWT-Komponenten 17 package tfh.awt.event; import tfh.awt.event.ColorEvent; public interface ColorListener extends java.util.EventListener { public void colorChanged (ColorEvent e); public void colorSelected (ColorEvent e); }

DVG3 - eigene AWT-Komponenten 18 Basisklasse: AWTEventMulticaster Multicaster organisiert die Registrierung und Deregistrierung von EventListenern, sowie den Aufruf der entsprechenden Methoden der registrierten EventListener. Multicaster implementiert selbst alle EventListener public class AWTEventMulticaster implements ComponentListener, ContainerListener, FocusListener, KeyListener, MouseListener, MouseMotionListener, WindowListener, ActionListener, ItemListener, AdjustmentListener, TextListener, InputMethodListener Multicaster speichert registrierte EventListener in einer Liste protected final EventListener a, b; protected AWTEventMulticaster (EventListener a, EventListener b){ this.a = a; this.b = b; } protected static EventListener addInternal(EventListener a, EventListener b) { if (a == null) return b; if (b == null) return a; return new AWTEventMulticaster(a, b); }

DVG3 - eigene AWT-Komponenten 19 Typischer Aufruf in Button transient ActionListener actionListener; public synchronized void addActionListener(ActionListener l) { if (l == null) { return; } actionListener = AWTEventMulticaster.add(actionListener, l); newEventsOnly = true; } Im Muticaster existiert dazugehörige Methode public static ActionListener add (ActionListener a, ActionListener b) { return (ActionListener)addInternal(a, b); }

DVG3 - eigene AWT-Komponenten 20 actionListener=null actionListener= AWTEventMulticaster l1l2 actionListener=l1 actionListener= AWTEventMulticaster l3 AWTEM l1l2 addActionListener(l1) addActionListener(l2) addActionListener(l3)

DVG3 - eigene AWT-Komponenten 21 Löschen eines EventListeners protected EventListener remove(EventListener oldl) { if (oldl == a) return b; if (oldl == b) return a; EventListener a2 = removeInternal(a, oldl); EventListener b2 = removeInternal(b, oldl); if (a2 == a && b2 == b) { return this;// it's not here } return addInternal(a2, b2); } protected static EventListener removeInternal(EventListener l, EventListener oldl) { if (l == oldl || l == null) { return null; } else if (l instanceof AWTEventMulticaster) { return ((AWTEventMulticaster)l).remove(oldl); } else { return l;// it's not here } }

DVG3 - eigene AWT-Komponenten 22 Typischer Aufruf in Button public synchronized void removeActionListener(ActionListener l) { if (l == null) { return; } actionListener = AWTEventMulticaster.remove(actionListener, l); } Im Muticaster existiert dazugehörige Methode public static ActionListener remove (ActionListener a, ActionListener b) { return (ActionListener)removeInternal(a, b); }

DVG3 - eigene AWT-Komponenten 23 Aufruf der Methoden des EventListeners im Multicaster: public void actionPerformed(ActionEvent e) { ((ActionListener)a).actionPerformed(e); ((ActionListener)b).actionPerformed(e); }

DVG3 - eigene AWT-Komponenten 24 Erweiterung: TFHEventMulticaster Aufgaben: Konstruktor Implementierung aller TFHEventListener (z.Z. ColorListener ) durch die entsprechenden Methoden ( colorChanged, colorSelected ). EventListener-spezifische add- und remove- Methoden implementieren

DVG3 - eigene AWT-Komponenten 25 package tfh.awt; import tfh.awt.event.ColorEvent; import tfh.awt.event.ColorListener; import java.util.EventListener; import java.awt.AWTEventMulticaster; public class TFHEventMulticaster extends AWTEventMulticaster implements ColorListener { protected TFHEventMulticaster(EventListener a, EventListener b) { super(a,b); } public void colorChanged(ColorEvent e) { ((ColorListener)a).colorChanged(e); ((ColorListener)b).colorChanged(e); } public void colorSelected(ColorEvent e) { ((ColorListener)a).colorSelected(e); ((ColorListener)b).colorSelected(e); } public static ColorListener add (ColorListener a, ColorListener b) { return (ColorListener)addInternal(a, b); } public static ColorListener remove (ColorListener l, ColorListener oldl) { return (ColorListener)removeInternal(l, oldl); } }

DVG3 - eigene AWT-Komponenten 26 Eigene AWT-Komponente: ColorChooser Zur komfortablen Definition von Farben.

DVG3 - eigene AWT-Komponenten 27 Bestandteile Scrollbars zur Einstellung der Farbe Textfelder zum Eingeben der Farbe (Rot-, Grün, Blauanteile) Labels zur Kennzeichnung Buttons zur Modifikation der eingestellten Farbe (heller, dunkler). Buttons zur Auswahl von Standardfarben und wiederholt benötigten Farben. Buttons zur Steuerung (o.k., reset, cancel, show) Problem: Scrollbars, Textfelder, Buttons müssen immer konsistent eingestellt sein, d.h. Änderungen durch eine Komponente müssen in den anderen Komponenten wiedergespiegelt werden. Wenn die Farbe mittels Scrollbars, Textfelder oder Farbbuttons geändert wird, wird ein COLOR_CHANGED-Event ausgelöst. Wenn die Farbe mittels o.k. oder cancel-Button geändert wird, wird ein COLOR_SELECTED-Event ausgelöst.

DVG3 - eigene AWT-Komponenten 28 Buttons o.k. – Farbe wird übernommen und COLOR_SELECTED-Event ausgelöst darker/brighter – etwas hellere/dunklere Farbe wird eingestellt und COLOR_CHANGED-Event ausgelöst show – Alle Komponenten im Fenster werden gelöscht und nur ein x- Button angezeigt reset – Farbe wird auf die Anfangsfarbe gesetzt und der COLOR_CHANGED-Event ausgelöst cancel – Farbe wird auf die Anfangsfarbe gesetzt und der COLOR_SELECTED-Event ausgelöst Farbbuttons – Anwahl von Standardfarben und schon einmal ausgewählten Farben

DVG3 - eigene AWT-Komponenten 29 Klasse: Scrollbar Konstruktoren: Scrollbar(int orientation, int value, int visible, int minimum, int maximum) orintation = Scrollbar.HORIZONTAL oder = Scrollbar.VERTICAL Scrollbar(int orientation) = Scrollbar(orientation, 0, 10, 0, 100) Scrollbar() = Scrollbar(Scrollbar.VERTICAL, 0, 10, 0, 100) Achtung: Es können nur Wert minimum <= x <= maximum- visible eingestellt werden. minimum value maximum visible

DVG3 - eigene AWT-Komponenten 30 Methoden in Scrollbar Listener public void addAdjustmentListener(AdjustmentListener l) public void removeAdjustmentListener(AdjustmentListener l) Hauptparameter public void setValues(int value, int visible, int minimum, int maximum)- sichert Konsistenz public void setValue(int value) public void setVisibleAmount(int visible) public void setMinimum(int minimum) public void setMaximum(int maximum) public int getValue() public int getVisibleAmount() public int getMinimum() public int getMaximum() Inkremente UnitInkrement beim Betätigen der Pfeile an den Enden Standard : 1 public void setUnitIncrement(int incr) public int getUnitIncrement() BlockInkrement beim Klicken auf die Flächen neben dem Schieber Standard : visible public void setBlockIncrement(int incr) public int getBlockIncrement()

DVG3 - eigene AWT-Komponenten 31 AdjustmentEvent Methoden public Adjustable getAdjustable() liefert das Objekt, das den Event ausgelöst hat public int getAdjustmentType() liefert den Typ des Events: UNIT_INCREMENT, UNIT_DECREMENT, BLOCK_INCREMENT, BLOCK_DECREMENT, TRACK public int getValue() liefert den eingestellten Wert public String paramString() beschreibt den Event

DVG3 - eigene AWT-Komponenten 32 AdjustmentListener Listener-Interface der auf AdjustmentEvents reagiert Methode: public void adjustmentValueChanged (AdjustmentEvent e)

DVG3 - eigene AWT-Komponenten 33 TextField Stellt ein einzeiliges Feld zur Anzeige und Eingabe von Text zur Verfügung (mehrzeiliges Feld : TextArea ). Konstruktoren public TextField(String text, int columns) TextField mit Text text und Breite columns TextField(columns) = TextField("",columns) TextField(text) = TextField(text,text.length()) TextField() = TextField("",0) Methoden Breite bestimmen und setzen public int getColumns() public void setColumns(int columns) Text lesen und schreiben public String getText() public void setText(String text) Cursor-Position bestimmen und setzen public int getCaretPosition() public void setCaretPosition(int position)

DVG3 - eigene AWT-Komponenten 34 Editierbarkeit abfragen und setzen public boolean isEditable() public void setEditable(boolean b) Text selektieren und selektierten Text lesen public void select(int start, int end) public int getSelectionStart() public int getSelectionEnd() public String getSelectedText() Echozeichen abfragen und setzen public boolean echoCharIsSet() public char getEchoChar() public void setEchoChar(char c) c=='\0' kein Echozeichen aktiv Listener registrieren und derigistrieren public void addTextListener(TextListener l) public void removeTextListener(TextListener l) public void addActionListener(ActionListener l) public void removeActionListener(ActionListener l)

DVG3 - eigene AWT-Komponenten 35 TextEvent TextEvent wird in TextField und TextArea ausgelöst, wenn der Text geändert wird. ActionEvents werden ausgelöst, wenn im TextField gedrückt wird. TextEvents haben keine wesentlichen eigenen Methoden: Mit getSource() kann das Objekt bestimmt werden, in dem der Event aufgetreten ist. Anschließend kann mit object.getText() der Text gelesen werden. TextField tf = (TextField)(e.getSource()); String text = tf.getText();

DVG3 - eigene AWT-Komponenten 36 TextListener Interface zur Behandlung von TextEvents. Einzige Methode: public void textValueChanged(TextEvent e) wird aufgerufen, wenn der Inhalt des Textfields geändert wird