Untergeordnete Seiten
  • Hintergrund und Icon des PageView anpassen
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Viele Swing-Komponenten der jadice document platform können in ihrem Aussehen angepasst werden. Ab Version 5 wird hierfür einheitlich der UIDefaults/UIManager-Mechanismus verwendet. Im Folgenden wird anhand der PageView demonstriert, wie auf diese Weise das Erscheinungsbild verändert werden kann.

Ausgangssituation

Standardmäßig sieht die JadiceDemoApplication folgendermaßen aus:

Wir interessieren uns hier nur für die Gestaltung der PageView. Der Hintergrund der PageView besteht aus zwei Elementen: einem (subtilen) Grauverlauf, der die Fläche füllt, sowie einem Icon, das als Platzhalter einspringt, wenn keine Seiten zur Anzeige vorhanden sind. Beide Elemente werden wir nun verändern.

Das Wo und Wann der Anpassung

Die Komponenten der jadice document platform initialisieren ihre zugehörigen UI-Properties in Form vom Subklassen von JadiceComponentAddon. Die Initialisierung wird jeweils in einem statischen Initialisierungsblock der zugehörigen Komponenten durchgeführt. So wird z.B. bei der Initialisierung der PageView die Initialisierung der UI-Properties im PageViewComponentAddon ausgelöst.

Ein Überschreiben der UI-Properties ist zu jedem Zeitpunkt vor der Erstellung der jeweiligen Komponenten-UI möglich. Es ist hierbei unerheblich, ob das Übschreiben vor der Initialisierung der Properties durch die jadice-Komponente geschieht, oder danach, da die jadice-seitige Initialisierung bereits gesetzte Properties nicht überschreibt. Lediglich in Fällen, in denen eine überschriebene Eigenschaft von einer anderen Standardeigenschaft abgeleitet werden soll, muss sichergestellt sein, dass dies erst nach der Initialisierung der jeweiligen Komponente geschieht.

Grundlegende Vorarbeiten für die Anpassung

Das folgende Beispiel geht davon aus, dass die Anpassungen auf die JadiceDemoApplication, die im Standard-Lieferumfang als Quelltext enthalten ist, angewendet werden. Aus Gründen der Einfachheit gehen wir davon aus, dass zur Anpassung nicht auf die Standardwerte der UI-Properties zurückgreifen wollen, sondern diese vollständig eigenständig ersetzen. Wir können unsere Anpassung also z.B. direkt am Anfang der Methode initializeGUI durchführen. Hierzu fügen wir eine neue Methode hinzu, in der wir die Anpassungen durchführen, und rufen diese in initializeGUI auf:

Die Methode overrideUIDefaults ist nun bereit, unsere Anpassungen aufzunehmen:

Ändern des Hintergrunds der Komponente

Der Hintergrund der PageView kann auf zwei Arten gesetzt werden:

Der von jadice verwendete Hintergrund wird der UI-Property PageView.background entnommen.

Fangen wir zunächst einfach an und setzen den Hintergrund auf eine feste Farbe:

Das Ergebnis sieht wie folgt aus:

Interessant, aber vielleicht noch etwas zu - zurückhaltend. Bringen wir also noch etwas Farbe hinein. Hierzu verwenden wir einen Painter:

Das sieht doch gleich viel freundlicher aus:

Ändern des Platzhalterbildes

Wenn einer PageView kein Dokument zugeordnet ist, oder das zugeordnete Dokument keine Seiten enthält, wird ein Platzhalterbild dargestellt. Dieses Bild wird der UI-Property Jadice.icons.blindimage entnommen. Der Wert der Property muss eine Implementierung von java.awt.Icon sein. Diese Icons können auf vielerlei Weise erzeugt werden. Die jadice document platform verwendet in der Regel den IconManager zum Laden und Verwalten vom Icons. Um dieses Beispiel nicht zu langweilig werden zu lassen, gehen wir aber einen anderen Weg. Zunächst suchen wir uns ein schönes, skalierbares SVG-Icon, zum Beispiel dieses hier:

Dieses konvertieren wir nun mit Hilfe des SVG nach Java2D-Konverters in eine Java-Klasse.

Icon

Der Flamingo SVG Transcoder hat übrigens eine viel schönere Oberfläche, funktioniert dafür aber leider nicht richtig.

Das Ergebnis der Konvertierung ist eine Java-Klasse, die javax.swing.Icon implementiert. Nun müssen wir das Icon nur noch einbinden. Bei der Gelegenheit setzen wir auch die gewünschte Zielgröße:

Unsere Beispielanwendung sieht damit schließlich so aus:


Verwandte Artikel

2 Kommentare

  1. Interessanter Artikel, nur eine grammatikalische Frage:

    Der oder die PageView? Mein Empfinden geht nach feminin, da die entsprechende Übersetzung die Seitenansicht ist

    1. Jörg Henne sagt:

      Für mich ist das gedanklich noch immer der (Page)View(er) wie früher, aber die Argumentation via die Sicht oder die Komponente ist für mich auch schlüssig.