Java Beans Grundlagen



Ähnliche Dokumente
JavaBeans Property-Editoren und Customizer

Java Beans.

Java Beans. Übersicht, Eigenschaftstypen, Heutiger Stand.

Übung 1: Object Inspector

Java Beans von Christian Beck-Wörner. Inhalt. Was ist ein Bean Konzept von Beans Entwicklung eines Beans Eigenschaften von Beans Testumgebung: BDK

Application Frameworks and Componentware Wintersemester 2002/03. Komponentenbasierte Programmierung in Java

JavaBeans Josef Templ. 14. Oktober 2002

Handbuch für die Erweiterbarkeit

Instrumentierung und Dekodierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

hue13 January 30, 2017

Klausur Grundlagen der Programmierung

Java Beans. von Raoul Schneider

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Java Idioms. Basic und Advanced Java Coding Style. Prof. Dr. Nikolaus Wulff

ÜBUNGS-BLOCK 8 AUFGABEN

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Multimedia im Netz Wintersemester 2012/13

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Refactoring von Legacy Systemen. Jochen Winzen andrena objects ag

Die Klasse java.lang.object. Thorsten Treffer

Praktikum aus Programmierung Dr. Michael Hahsler WS 2006/2007. Dokumentation des Projektes. Memory. Marco Ruzicka ( )

SWE1 / Übung 9 ( )

Objektorientierte Programmierung Studiengang Medieninformatik

Prüfung Softwareentwicklung II (IB)

Probeklausur: Programmierung WS04/05

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Das Model View Controller (MVC) Konzept

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Javakurs für Anfänger

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

JavaBeans. Marc Monecke

Programmieren in Java -Eingangstest-

Prinzipien der objektorientierten Programmierung (OOP)

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

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

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Programmieren in Java

Javakurs für Anfänger

JTable. W. Lang HWR Berlin, SS

Fragen zur OOP in Java

Blatt 3. Die Liste für die Bilder müssen wir doch nicht selber programmieren, oder?

Javakurs zu Informatik I. Henning Heitkötter

Objektorientierte Programmierung

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

Java Beans. Seminar Komponentenprogrammierung Freie Universität Berlin, WS 2004/2005 Ivo Köhler, 08. November 2004

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

C# im Vergleich zu Java

Felder. Inhaltsverzeichnis. M. Jakob. 28. April Begriffsbildung. Verwendung von Feldern. Gymnasium Pegnitz

Programmierkurs Java

Felder. M. Jakob. 28. April Gymnasium Pegnitz

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Erste Java-Programme (Arrays und Schleifen)

Informatik II Musterlösung

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Vererbung und Polymorphie

Wiederholung. Klassenhierarchie:

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 19. August Programmier-Labor. 1. Übungsblatt

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Verkettete Datenstrukturen: Listen

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

Methoden (fortgeschritten) in C# - 1

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

Unterschiede in der Implementierung einer Software mit Datenbankanbindung in Java bzw. PHP am Beispiel einer Zeiterfassungssoftware

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Einführung: Verteilte Systeme - Remote Method Invocation -

1 Modellierung einer Uhr

Kurzreferenz ILIAS für Dozenten

Objektorientierte Programmierung

Einführung in die Informatik

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Spielberichte oder News erstellen

Einstieg in die Informatik mit Java

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Modernisierung von Forms durch neues Look&Feel

12 Abstrakte Klassen, finale Klassen und Interfaces

JSP (Tomcat) mit MySQL-Datenbank

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Java I Vorlesung 6 Referenz-Datentypen

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Programmieren in Java

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Inhaltsverzeichnis. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf. Druckmanager allgemein 2.

- EINSTIEG IN JAVA - (1/5) Datum:

JBuilderX: Installation und Kurzanleitung (Mac)

1 Einleitung Generizität Syntax... 2

Aufgabenblatt 4. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Dr. Gudrun Pabst Trivadis GmbH. Forms und JavaBeans. Enhanced JavaBean Support in Forms 9i

Transkript:

Christian Wilhelm Java Beans Grundlagen Überblick über den Vortrag: Vorwort Was bringen Java Beans? Wie werden Java Beans erstellt? Wie benutzt man Java Beans?

Vorwort: In meiner Projektarbeit hatte ich es mir zum Ziel gesetzt ein Bean zur Datums- und Zeitauswahl mit automatischer Validierung zu realisieren: Aus den daraus gewonnen Erfahrungen verfasste ich in Word ein How-To make a Bean Dokument, indem die grundlegenden Beaneigenschaften mit Codebeispielen enthalten sind. Dieser Vortrag basiert auf diesem How-To. Das Mini How-To steht im Word Format zum download bereit unter: www.ghent.de/beans.doc

Was bringen Java Beans? Selbstgeschriebene Beans: Wiederverwendbarkeit von Programmcode Einheitliches Design von Oberflächen möglicher Verkauf Fremderworbene Beans: meist komplexer Funktionsumfang meist fehlerfreier Code teure und langwierige Eigenentwicklung entfallen

Wie werden Java Beans erstellt? Da dieser Bereich der Schwerpunkt des Vortrages darstellt, möchte ich hier erneut eine kurze Gliederung der behandelten Themen aufführen: 1. Die BeanInfo Klasse 2. Der Property Editor 3. Der Customizer 4. Eventhandling bei Java Beans 5. Erzeugen eines JAR Archivs

Die BeanInfo Klasse (1/2) Beans sind ganz normale Java Programme, die über Setter und Getter Funktionen ihre Parameter nach außen geben. Die eigentliche Beanfunktionalität kommt durch eine Klasse, die so heißt, wie die Beanklasse mit der Ergänzung: BeanInfo. In meinem Fall: Beanklasse: BeanInfoklasse: DateField.class DateFieldBeanInfo.class Diese BeanInfoklasse wird von java.beans.simplebeaninfo abgeleitet. Durch Überschreiben der public Image geticon(int icontype) Methode, wird das Icon des Beans, das später in der Entwicklungsumgebung das Bean selbst symbolisiert, definiert.

Die BeanInfo Klasse (2/2) Um die Parameter über Setter und Getter aus der Beanklasse in der Entwicklungsumgebung anpassen zu können, ist es nötig die public PropertyDescriptor[] getpropertydescriptors() Methode zu überschreiben und die Setter und Getter zusammen mit der Eigenschaftbeschreibung in einem PropertyDescriptor Array zurückzugeben. Um zu zeigen, wie PropertyDescriptoren initialisiert werden, hier ein Beispiel: new PropertyDescriptor("dateformat",DateField.class,"getFormat","setFormat") Durch das Überschreiben der public PropertyDescriptor[] getpropertydescriptors() Funktion besitzt das Bean nun nur noch die Eigenschaften, die mit Hilfe des PropertyDescriptor[] zurückgegeben wurden. Um wieder alle Eigenschaften in der Entwicklungsumgebung anzeigen zu können, bedarf es der public BeanInfo[] getadditionalbeaninfo() mit der die BeanInfo einer oder mehrerer anderer Klassen (meist die Basisklasse der Beanklasse) zurückgegeben wird. Das Ergebnis sind alle normalen Eigenschaften des Beans plus die selbst erzeugten.

Der Property Editor (1/2) Mit Hilfe der BeanInfo Klasse sind nur relativ einfache Eigenschaftsänderungen, wie die Übergabe von Parametern oder eine True/False Auswahl bei boolean Datentypen möglich. Um unterschiedliche Auswahlmöglichkeiten zur Verfügung zu stellen, wird ein eigener Property Editor benötigt. Diese Klasse wird java.beans.propertyeditorsupport abgeleitet. In dieser Klasse werden die Methoden public String getastext() public void setastext(string Text) überschrieben. Um das Ganze dann anzeigen zu können, muss in der BeanInfo Klasse noch die Methode setpropertyeditorclass(class PropertyEditor) des PropertyDescription Objekts gesetzt werden. Ein mögliches Ergebnis könnte folgendermaßen aussehen:

Der Property Editor (2/2) Falls man noch mehr Flexibilität benötigt, muss man dann anstelle der Methoden setastext und getastext die Methoden: ispaintable() mit true und dann die paintvalue(graphics g, Rectangle box) Methode mit den gewünschten Änderungen überschreiben. Hiermit sind dann auch grafische Effekte der Eigenschaft möglich, wie das Ändern der Hintergrund- oder der Vordergrundfarbe:

Der Customizer (1/2) Mit einem Bean Customizer kann man mehrere (oder auch alle) spezifischen Eigenschaften eines Beans einstellen. Dies ist vor allem von Vorteil, wenn man komplexe Zusammenhänge innerhalb eines Beans hat. Zum Beispiel, das Eigenschaft A nur erscheint, wenn Eigenschaft B zuvor angewählt wurde. Um den Customizer aufzurufen, klickt man im JBuilder mit der rechten Maustaste im Designbaum, auf das Bean und wählt hier Customizer. Ich bediente mich des Customizers um meine Eigenschaften einfach und übersichtlich darzustellen. Zusätzlich versah ich den Customizer mit einem Hilfe Button, der die in meinem Bean verwendbaren Formatzeichen auflistet:

Der Customizer (2/2) Um einen Customizer zu programmieren, verwendet man eine ganz normale Klasse, die man von einem JPanel ableitet und das Interface Customizer implementiert. Diese Klasse kann man nun wie gewohnt mit grafischen Elementen gestalten und designen. Sie sollte die Methode public void setobject (Object obj) überschreiben. In dieser Methode werden den Eigenschaften die Werte zugewiesen, die vielleicht schon teilweise mit den normalen Eigenschaften des JBuilders eingestellt wurden. Außerdem sollte man einen PropertyChangeListener implementieren. Durch diesen Listener werden nämlich die Properties aus der Propertyliste des JBuilders benachrichtigt und erhalten ebenfalls die, im Customizer, gesetzten Eigenschaften. Dadurch werden inkonsistente Einstellungen verhindert. Um aus diesem JPanel dann einen Customizer zu machen, wird in der BeanInfo des Beans die Methode getbeandescriptor() überschrieben und die Klasse des Customizer zurückgegeben

Eventhandling bei Java Beans (1/3) Das Eventhandling in einem Bean funktioniert genau gleich wie in normalen Java Programmen. Es muss nur sichergestellt werden, dass das Bean in seinen Eventhandlern das Event noch einmal feuert. Nur so ist es möglich, dass die Klasse, die das Bean implementiert hat, das Event bekommt und dann in dessen Eventhandler springt: Programm mit Bean Event Bean Eventhandler Eventhandler

Eventhandling bei Java Beans (2/3) Um diese Funktionalität zu gewährleisten, muss zu erst einmal der Standard- Listener entfernt werden: public synchronized void removefocuslistener(focuslistener l) super.removefocuslistener(l); if (focuslisteners!= null && focuslisteners.contains(l)) Vector v = (Vector) focuslisteners.clone(); v.removeelement(l); focuslisteners = v; Anschliessend wird ein eigener Listener erzeugt: private transient Vector focuslisteners; Dieser eigene Listener wird nun an das Bean geaddet public synchronized void addfocuslistener(focuslistener l) super.addfocuslistener(l); Vector v = focuslisteners == null? new Vector(2) : (Vector) focuslisteners.clone(); if (!v.contains(l)) v.addelement(l); focuslisteners = v;

Eventhandling bei Java Beans (3/3) Um nun ein Event zu feuern, benötigt man noch die Funktion: protected void firefocuslost(focusevent e) if (focuslisteners!= null) Vector listeners = focuslisteners; int count = listeners.size(); for (int i = 0; i < count; i++) ((FocusListener) listeners.elementat(i)).focuslost(e); Diese Methode muss man nun im eigenen Eventhandler des Beans aufrufen um ein Event zu feuern: public void focuslost(focusevent e) firefocuslost(e); Dabei übergibt man einfach das Event e. Nun reagiert das Bean wie jede andere Komponente auch auf die Events der Klasse, die es verwendet.

Erzeugen eines JAR Archivs Um das Bean nun transportabel zu machen, verwendet man einen Zip Packer, packt alle erzeugten Klassen in ein Archiv, fügt noch ein Verzeichnis Meta-inf das wiederum eine Datei Manifest.mf enthalten muss dazu und benennt die Endung von.zip nach.jar um. Die Manifest.mf ist eine Textdatei, die in unserem Falle genau drei Zeilen enthält: Die erste Zeile gibt die Version des Manifests an. In meinem Fall: Manifest-Version: 1.0 Anschließend folgt der vollqualifizierte Pfad zur Beanklasse innerhalb des JARs an (hierzu muss die Verzeichnisstruktur innerhalb des JARs berücksichtigt werden). Die dritte Zeile lautet einfach: Java-Bean = True In meinem Fall sieht das Manifest folgendermaßen aus: Manifest-Version: 1.0 Name: DateField.DateField.class Java-Bean: True

Wie benutzt man Java Beans? Praktische Vorführung in JBuilder 5