Wenn Sie neue Komponenten oder Beans zur Verwendung innerhalb des Visual Editors erstellen (z.B. Hinzufügen neuer Komponenten zu der Palette), können Sie deren Verhalten durch Bereitstellung einer BeanInfo-Klasse steuern.
Eine BeanInfo-Klasse implementiert java.beans.BeanInfo und wird durch den Visual Editor verwendet, um das Verhalten der Sicht 'Eigenschaften' zu ermitteln und festzustellen, ob eine Anpassungsfunktion verfügbar ist. Der Visual Editor beinhaltet BeanInfo-Klassen für allgemeine AWT- und Swing-Steuerungen.
Da die BeanInfo-Klasse Informationen enthält, die nur während der Entwicklungszeit benötigt werden, wird sie üblicherweise in einem anderen Projekt als die Bean-Klasse selbst aufbewahrt und nicht eingeschlossen, wenn die Bean implementiert wird. Der Visual Editor für Java verwendet eine Anzahl an Regeln, die es Ihnen ermöglichen, BeanInfo-Klassen den Java-Beans, die sie beschreiben, zuzuordnen. Sie müssen diese Regeln verstehen, wenn Sie Java-Beans verwenden, die BeanInfo-Klassen haben, von denen Sie möchten, dass sie durch den Visual Editor entdeckt werden. Wenn Sie zum Beispiel Java-Bean-Klassen eines Fremdanbieters verwenden oder wenn Sie Java-Beans und BeanInfo-Klassen entwickelt haben, die Sie verwenden.
Um mehr über BeanInfo-Klassen zu erfahren, können Sie die Java-Beans-Spezifikation unter http://java.sun.com/products/javabeans/docs/ downloaden.
Die Klasse java.beans.Introspector dient dazu, eine BeanInfo-Klasse für eine Java-Bean zu lokalisieren. Dieses Ereignis wird als Introspektion bezeichnet und wird durch den Visual Editor bei der erstmaligen Verwendung einer Bean durchgeführt. Wenn z.B. eine Schaltfläche erstmals von der Palette freigegeben wird, findet die Introspektion statt, die versucht, die korrekte BeanInfo-Klasse zu lokalisieren. Nach der Introspektion der Bean werden die Ergebnisse zwischengespeichert, um die Leistung zu steigern. Wenn der Visual Editor jedoch feststellt, dass die BeanInfo-Klasse eventuell geändert wurde und der Inhalt des Zwischenspeichers veraltet ist, wird die Introspektion wiederholt.
Die Introspektion einer Bean erfolgt durch Aufruf der statischen Methode getBeanInfo(Class), wobei die Bean-Klasse das Argument ist. Beispiel:
java.beans.Introspector.getBeanInfo(MyJavaBean.class)
Das Introspektionsprogramm verwendet die folgende Logik, um eine BeanInfo-Klasse für die Argumentklasse MyJavaBean zu lokalisieren. Dies bedeutet eine Anzahl an aufeinanderfolgenden Schritten, und nach dem erfolgreichen Abschluss eines Schritts beendet das Introspektionsprogramm die Suche. Schlägt ein Schritt fehl, wird der nächste Schritt verwendet, um einen anderen Weg zur Lokalisierung der Bean-Info zu versuchen.
Wenn eine BeanInfo-Klasse für die Klasse gefunden wird, so gibt das Introspektionsprogramm diese nicht ausdrücklich zurück. Statt dessen verwendet es deren Informationen zur Erstellung einer temporären Ergebnisklasse, die java.beans.BeanInfo implementiert.
Der beste Weg zum Verständnis des BeanInfo-Pfads ist die Betrachtung der JVM , die zur Durchführung der Introspektion erzeugt wurde. Dieser virtuellen Maschine wird ein Klassenpfad gegeben, der aus den folgenden Einträgen besteht:
Nach der Erzeugung der virtuellen Maschine hat java.beans.Introspector seine Liste an Paketen, in denen nach BeanInfo-Klassen mit der Methode public void setSearchPath(String[]) zu suchen ist.
Die Argumente für diese Methode sind:
Wenn die Bean, die Sie schreiben, Attribute einer Superklasse enthält, so wird die Standard-BeanInfo die enthaltenen Attribute nicht freistellen. Sie müssen sie ausdrücklich mit der Methode getAdditionalBeanInfo() freistellen.
Beispiel:
public BeanInfo[] getAdditionalBeanInfo() { try { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â // Durch folgenden Eintrag werden alle enthaltenen Merkmale übernommen. Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â return new BeanInfo[] { Introspector.getBeanInfo(MyPanel.class.getSuperclass())}; } catch (IntrospectionException e) { Â Â Â Â Â Â Â Â Â Â return new BeanInfo[0]; Â Â Â Â Â Â Â Â Â Â }
Wenn ein enthaltenes Attribut nicht freigestellt ist, wird es durch den Visual Editor nicht wiedergegeben, selbst wenn es im Quellcode gesetzt ist.
BeanInfo-Klassen für JRE-Klassen
Die Java-Beans für Klassen, die in der JRE enthalten sind, werden als Teil des Visual Editors für Java zur Verfügung gestellt. Diese definieren das Verhalten von Klassen, wie z.B. javax.swing.JButton oder javax.swing.JFrame, innerhalb der Workbench.Tipps für das Schreiben von BeanInfo-Klassen für den Visual Editor
Dieser Abschnitt befasst sich mit einigen Regeln, die Sie anwenden können, wenn Sie eine BeanInfo-Klasse für eine Java-Bean schreiben, die für die Verwendung im Visual Editor für Java vorgesehen ist.Steuerung von BeanInfo-Informationen für Plug-in-Entwickler
Sie können die Art, in der BeanInfo-Klassen einer Klassenpfadvariablen zugeordnet werden, durch Hinzufügung eines Eintrags in einer Plug-in-Manifestdatei steuern.
Überge6rdnetes Th Extending the visual editor for Java
Verwandte Tasks
Steuerung von BeanInfo-Informationen für Plug-in-Entwickler
Angeben der Speicherposition der BeanInfo-Klassen