Artikel

 
August 2009 | Artikel

Swing mit Substanz Fortsetzung, Teil 3

Teil 1   Teil 2   Teil 3   

TabbedPreviewPainter
Mit dem TabbedPreviewPainter liegt Substance ein weiterer spezieller und vor allem beeindruckender Painter bei, mit dem sich kleine Vorschaufenster auf Tabbed Panes anzeigen lassen. Das sieht dann ganz ähnlich den Vorschaufenstern aus, die man von Windows Vista kennt, wenn man mit der Maus einen Moment lang auf einem Symbol in der Taskleiste verweilt. Abbildung 3 zeigt den TabbedPreviewPainter in Aktion: Bleibt man mit der Maus einen kurzen Moment auf dem ersten Tab stehen, erscheint ein Vorschaubild des Tabs. Klickt man auf die Lupe ganz links (auch diese wurde von dem Painter gezeichnet), dann öffnet sich ein separates Fenster, in dem alle Tabs als Vorschaubild dargestellt werden. Klickt der Benutzer auf eines dieser Vorschaubilder, wird der entsprechende Tab geöffnet.

Interessant an dieser Stelle ist, dass dieses Feature mit nur einer einzigen Zeile Code aktiviert werden kann! Hierzu ist nämlich lediglich auf dem Tabbed Pane, das die Vorschaufunktionalität enthalten soll, folgende Client-Property zu setzen:

myTabbedPane.putClientProperty(LafWidget.TABBED_PANE_PREVIEW_PAINTER, new DefaultTabPreviewPainter()).

Plug-ins
Substance ist darauf ausgerichtet, möglichst gut mit den bestehenden Komponenten aus der Swing-Suite zusammenzuarbeiten. Speziell für Swing existieren jedoch eine ganze Reihe Erweiterungen von Drittanbietern, mit denen der Funktionsumfang von Swing deutlich aufgestockt werden kann. Damit diese Erweiterungen auch mit Substance zusammenspielen, haben die Entwickler eine offene Schnittstelle (Plug-in-Konzept) realisiert, mit der es möglich ist, externe Swing-Erweiterungen optimal an Substance anzubinden. Das bereits erwähnte Substance Extras Pack [5] ist ein Beispiel für ein solches Plug-in. Als separaten Download bieten die Entwickler auch noch Plug-ins für folgende Komponentenbibliotheken an:

Während SwingX und JIDE mehr oder weniger mächtige Erweiterungen für Swing bereitstellen und Swing um viele zusätzliche Komponenten (zum Beispiel Login-Framework, Date Picker, Collapsible Panel, Checkbox List und viele mehr) erweitern, konzentriert sich Flamingo hauptsächlich darauf, eine Ribbon-Komponente für Swing bereitzustellen (auch wenn hier interessante Komponenten wie eine Breadcrumb Bar oder der Command Button enthalten sind). Ribbons sind neuartige Bedienelemente, die Microsoft erstmals mit Office 2007 eingeführt hat und die Menuzeile und Toolbar vereinheitlichen. Toolbar und Menuzeile sind somit überflüssig. Wenn man bedenkt, dass mit dem kommenden Windows 7 die Ribbon-Technologie nun auch Einzug ins Betriebssystem selbst nehmen wird, dürfte klar sein, dass diese neuartigen Bedienelemente keine Eintagsfliege mehr sind. Deshalb umso besser, dass bereits heute Flamingo eine funktionsfähige und brauchbare Ribbon-Implementierung für Java und Swing zur Verfügung stellt. Abbildung 4 zeigt ein beispielhaftes Ribbon mit einem Standard-Windows-LookAndFeel. In Abbildung 5 sieht man das gleiche Ribbon, diesmal jedoch unter Verwendung mit dem Substance-Plug-in für Flamingo [9] und des Office2007BlueSkins aus dem Substance-Paket. Die Anwendung ist kaum noch von Office 2007 zu unterscheiden.

Fazit
Dieser Artikel hat das Substance Look And Feel vorgestellt und gezeigt, welche enorme Möglichkeiten in dieser umfangreichen Bibliothek stecken. So bringt Substance bereits von Haus aus vierundzwanzig ansprechende LAFs mit, die out-of-the-box in eigenen Swing-Anwendungen verwendet werden können. Darüber hinaus stellt Substance selbst ein mächtiges Framework dar, mit dem sich bestehende Skins leicht verändern oder ganz neue LAFs programmieren lassen. Eine offene Schnittstelle bietet zudem die Möglichkeit, Drittanbieterbibliotheken mit Substance in Einklang zu bringen. Insbesondere das Plug-in zur Flamingo-Komponentenbibliothek ist einen näheren Blick wert, denn durch die Kombination von den in Substance mitgelieferten Office2007-Skins und der Ribbon-Komponente aus dem Flamingo-Projekt lassen sich bereits heute Anwendungen bauen, die den aktuellen Office- und Windows 7-Produkten zumindest designtechnisch in nichts nachstehen.

Marc Teufel arbeitet als Software-Entwickler bei der hama GmbH & Co und ist dort für die Entwicklung großer Java-Anwendungen im Logistikzentrum zuständig. Er ist Autor zahlreicher Fachartikel zu Java und .NET, hat zwei Bücher zu Web Services publiziert und spricht regelmäßig auf Fachkonferenzen. Unter www.teufel.net ist er im Web zu erreichen.
  1. Marktübersicht Java LAFs
  2. Substance LAF
  3. Substance Demo
  4. Swing und Concurrency
  5. Substance Extras Pack
  6. Flamingo
  7. SwingX
  8. JIDE common
  9. Substance-Flamingo Plug-in

Teil 1   Teil 2   Teil 3   

Anzeige

Kommentare

Gravatar RPR 18.08.2009
um 21:41 Uhr
Vielen Dank für diesen informativen Artikel!:-) #zitieren
Gravatar Aljoscha Rittner 19.08.2009
um 07:51 Uhr
Moin!

Der Artikel und die Arbeit eines Freundes brachten mich dazu ein Substance Plugin für die NetBeans Platform zu entwickeln. Das Substance-Team hat ja ihr eigenes Plugin für NB aufgegeben. Zusätzlich wird der Einstaz erschwert, weil hard-coded eine Exception wirft, wenn man nicht im EDT das GUI erzeugt oder ändert (siehe Infos hier: http://www.pushing-pixels.org/?p=368). Ich bin zwar auch für ein Early-Fail, aber hard-coded hat man bei so großen Anwendungen wie NetBeans kaum eine Chance überhaupt aus den Sumpf der Stacktraces herauszukommen, um irgendwas zu fixen. Es wäre schön gewesen, wenn man dazu ein Legacy-Flag gehabt hätte. So musste ich die Substance-Sourcen patchen.
Ich werde mich aber dafür einsetzen, dass mal ein Blick auf die Problembereiche geworfen werden, so dass in Zukunft Substance ungepatcht auf mit NetBeans und der NetBeans Platform läuft. Hier das Plugin: http://tinyurl.com/substancenbplugin

Toni Epple (ebenfals NB Dream Team Member und Consulter) arbeitet parallel an Verbesserungen, damit wir in NB UI-Delegates haben. Damit können dann Tab und andere spezielle Swing-Komponenten besser von den Skins manipuliert werden.

Beste Grüße,
Josch.
#zitieren
Gravatar Toni Epple 19.08.2009
um 23:18 Uhr
Hallo Marc, danke für den guten Artikel.
Substance ist wirklich eines der besten Swing Look & Feels.

Hi Josch, als ich das "Moin!" in den Kommentaren gelesen habe, war mir schon klar, wer hier schreibt ;-). Ich bin schon gespannt auf die nächsten News zu Deinem Projekt! Ich werde auch mein bestes versuchen damit NetBeans 6.8 wieder mehr Substanz erhält...

--Toni
#zitieren
Gravatar Claudi 09.02.2010
um 16:55 Uhr
Hi,
erstmal vielen Dank für diesen informativen Artikel.
Ich hab bzw. sagen wir mal wollt nachdem ich das gelesen hatte mit Flamingo arbeiten. Bin aber leider nicht weit gekommen. Im Prinzip, um es kurz zu machen möchte ich auf diese Weise jemanden suchen der mir zu dem Thema ein bisschen was erklären kann. Wenn sich irgendwer dazu bereit erklärt, kann er/sie sich ja bei mir unter sulli@spamavert.com melden (werde in nächster Zeit die Spamadresse täglich checken).
#zitieren

Anzeige

zurück zum Seitenanfang