Translate this page...

BeanDev: GUI Beans - Zurück zu den Wurzeln

Manchmal kann man schon vergessen, warum NetBeans überhaupt den Teil "Beans" im Namen trägt. Dabei ist es gerade in der NetBeans-IDE recht einfach im Form-Editor eigene Java-Bean-Komponenten einzufügen.

Sicherlich, im Entwicklungsprozess von Version 5.5 zu 6.5 ist ein praktisches Werkzeug, zwischenzeitlich in Version 6.0, unter die Räder gekommen: Der BeanInfo-Editor. Dabei hat gerade dieses Tool in Vergangenheit viel Handarbeit abgenommen, die bei der Pflege von BeanInfo-Klassen auf einem so zukommen.

Auch die aktuelle Version in 6.5 lässt noch einige Wünsche offen, aber es ist wieder schön bequem geworden zu seinen POJO-Klassen BeanInfo-Deskriptoren hinzuzufügen.

NetBeans hat für Java-Bean-Komponenten einiges an Assistenten bereitgestellt. Diese Assistenten stellen i.d.R. nur einfache Java-Templates zur Verfügung. Mit New File... -> Kategorie "JavaBeans Objects" kommt man an die Vorlagen heran.

  • JavaBeans Component
    Erzeugt eine einfache serialisierbare Java-Klasse mit PropertyChangeSupport und dazu einem Beispiel-Property.
  • BeanInfo und BeanInfo w/o Icon
    Erstellt eine BeanInfo-Klasse (mit oder ohne Icon-Abfrage), die sich auf eine Java-Klasse bezieht. Die BeanInfo-Klasse arbeitet mit einem MultiView-Editor für den Java-Quelltext und einem Designer.
  • PropertyEditor
    Dieser Assistent erzeugt eine sehr einfache Vorlage eines eigenen Eigenschafts-Editor, der für bestimmte Properties festgelegt werden kann. Die Klasse erweitert nur PropertyEditorSupport.
  • Customizer
    Mit dem Customizer-Assistenten wird ein GUI-Panel erstellt, der als besonderer grafischer Editor über den PropertyEditor zurückgegeben werden kann. NetBeans zeigt dann im Eigenschafts-Fenster für das Property einen zusätzlichen Button an, um diesen Customizer aufzurufen.
    Der Customizer ist ein JPanel und implementiert das Interface java.beans.Customizer.

Als Beispiel (wie man die Klassen verwendet), möchte ich hier ein JPanel-GUI Bean vorstellen,

  • welches ein Hintergrund-Bild darstellt,
  • dieses Bild skaliert oder zentriert darstellt
  • und im GUI-Editor weitere Komponenten aufnehmen darf.

Für das Bean JImagePanel nehme ich nicht den Assistenten, um eine JavaBeans Component zu erzeugen. Einfach nur Strg+N -> Java Class auswählen und die Klasse "JImagePanel" nennen. Nun das Panel noch von JPanel ableiten, Fix Imports..., und schon haben wir ein einfaches Java Bean.

 

import javax.swing.JPanel;
public class JImagePanel extends JPanel {

}

Ein sehr einfaches Java-Bean. Um das Hintergrundbild im Panel anzeigen zu können, muss dieses als Property hinterlegt werden. Den Eingabecursor in den Body der Klasse setzen, Alt+Einf eintippen und im Kontextmenü "Add Property..." auswählen.

Im Dialog des Assistenten einfach den Namen auf "backgroundImage" setzen, für Type nehme ich den Browse-Button und gebe im Filter einfach ImageIcon ein und übernehme die Klasse javax.swing.ImageIcon. Außerdem sollte die Eigenschaft "private" sein und ein Haken bei "Bound" sollte noch gesetzt werden. Damit wird auch automatisch "Generate Property Change Support" aktiviert.

 

Da das Hintergrundbild entweder skaliert oder zentriert werden soll, käme da noch eine zusätzliche Eigenschaft hinzu. Man könnte ein boolean verwenden, nur um das Skalieren einstellbar zu machen. Bei false könnte man das Bild dann zentrieren. Das wäre aber schlecht erweiterbar. Also verwende ich eine Enumeration.

Ich füge der Klasse einfach folgende Zeile hinzu:

public static enum Appearance {SCALE, CENTER};

Dann erzeuge ich das passende Property hinzu: Alt+Einf -> "Add Property...". Den Namen auf "appearance" setzen, für Type den enum-Namen "Appearance", Zugriff wieder "private" und [X] Bound. Dann wieder [Ok] anklicken.

Jetzt ist in der (anfänglich einfachen) Java-Klasse eine Menge los. Zwei Properties sind hinzugekommen und PropertyChangeSupport. Außerdem darf man dem Bean nun Listener hinzufügen und entfernen. Ein richtig schönes Bean also!

Im zweiten Teil geht es an den BeanInfo-Editor, um nun die Darstellung der Eigenschaften in NetBeans zu steuern.


-> Teil 1 | Teil 2 | Teil 3 | Teil 4


http://www.netbeans-forum.de/ Da werden Sie geholfen:
Das deutsche NetBeans Forum

      NetBeans Dream Team Member

Hinterlasse eine Nachricht

Meine Informationen merken

CAPTCHA Bild zum Spamschutz 

[Valid RSS]