Icon-Box Symbol
Name: SymbolicIcons
Version: 0.07.04
 

Ein SymbolicIcon ist ein kleines Pikto­gramm, das als Vektor­graphik größen­skalierbar ist. Es immer dort einge­setzt werden, wo ein javax.swing.Icon - Objekt benötigt wird. Zusätzlich kann das Icon auch als java.awt.Image zurück geben werden.

Das Java-Archiv enthält die Klasse Symbolic­Icon und alle zusätz­lich erforder­lichen Klassen und Interfaces. Weiterhin ist die Klasse Icon­Box, eine graphische Ober­fläche zu Test- und Demon­strations­zwecken, mit enthalten.

 

Durch den Aufruf von java -jar <Java-Archiv> oder durch Doppelklick (unter Mac OS X, MS Windows) wird das Demo-Programm (Icon­Box) gestartet.

Downloads

Symbolic_icons.0.07.04.jar Java-Archiv mit SymbolicIcon und weiteren Klassen
Readme_de.txt Textdatei mit Installationshinweisen
Symbolic_icons.pdf Ausführliche Dokumentation zur Bibliothek
JavaAPI.zip Standardisierte Java API Dokumentation (als ZIP-Archiv)
Source.zip Quellcode-Dateien (als ZIP-Archiv)
Symbolic_icons.0.07.04.zip Gesamt-Download (ohne ausführliche Dokumentation)

 

Weitere Informationen

Hintegründe zur Entstehungsgeschichte.

Was ist ein SymbolicIcon ?

Ein SymbolicIcon ist ein kleines Pikto­gramm, das als Vektor­graphik größen­skalierbar ist.

Es wird als Symbolic­Icon - Objekt realisiert und kann als Icon immer dort einge­setzt werden, wo ein javax.swing.Icon - Objekt benötigt wird. Daneben enthält die Klasse auch eine Methode, die das Icon als java.awt.Image zurück gibt.

Ein Symbolic­Icon besteht aus einem Symbol (Symbol) und kann einen Rahmen (Icon­Border) haben, beide sind vonein­ander unab­hängig. Das Symbol kann auch gedreht darge­stellt werden und es kann beim Setzen der Größe die Einhal­tung eines festen Seiten­verhältnis­ses erzwungen werden. Das feste Seiten­verhält­nis ergibt sich aus dem Verhält­nis der Mindest­maße für Breite und Höhe.

Bei der Erzeu­gung eines SymbolicI­con - Objekts müssen das zu verwen­dende Symbol und (optional) der zu verwen­dende Rahmen ange­geben werden. Für beide ist jeweils ein Interface definiert, dass im Weiteren erläutert wird.

Für ein Symbol kann gefor­dert werden, dass ein festes Seiten­verhält­nis immer einzu­halten ist (weil eine unter­schiedliche Skalier­ung in Breite / Höhe zu einer nicht vertret­baren Verzer­rung führt). Ähnliches ist auch beim Rahmen möglich. Diese Festle­gungen werden von Symbolic­Icon beachtet.

Beim einer gedrehten Darstel­lung des Symbols und zu beach­tendem Seiten­verhältnis ändert sich auch die Mindest­größe (und damit das Seiten­verhältnis). So ergibt z. B. eine Drehung um 90 Grad das "Vertau­schen" der Mindest­maße für Breite und Höhe.

Das Symbol (Symbol)

Pictogramm: Läufer

Das Interface Symbol definiert, welche Informationen zu einem (einfachen) Symbol benötigt werden. Das Symbol selber setzt sich aus Standard-Formen (java.awt.Shape) zusammen, die offen oder gefüllt dargestellt werden können. Dabei ist für das Zeichnen nur eine einzige Strichstärke verfügbar.

Dass trotz dieser Einschränkung interessante Piktogramme möglich sind, zeigt das nebenstehende BeispielLäufer. Die Idee stammt von der Wikipedia-Seite Piktogramm.

Die Methoden, die das Interface definiert, betreffen Name, Mindestgröße, Eigenschaften, wie z. B. ob das Seitenverhältnis beibehalten werden muss, und die Rückgabe der zu zeichnenden Formen (Shape[]). Zusätzlich kann für jede Einzelform eine Zeichenfarbe festgelegt werden.

Um Einzelformen, wie z. B. für das gezeigte Beispiel benötigt, angeben zu können, gibt es die Klasse SegmentChain. Sie implementiert Shape. Damit sind aneinander gehängte Linien möglich. Als mögliche Segmente werden Line2D, Quad­Curve2D, Cubic­Curve2D und Arc2D (aus java.awt.geom) unterstützt. Zur Größenskalierung einer so gebildeten Linie kann Trans­formable­Segment­Chain verwendet werden.

Mit den Enum - Klassen BasicSymbols, SimpleArrows werden einige Objekte bereitgestellt, die das Interface implemen­tieren und die für eigene Icons verwendet werden können. Dabei wird intern auf die Klasse Composed­Symbol zurück gegriffen.

Der Rahmen (IconBorder)

Analog zu Symbol gibt es das Interface IconBorder, das die Anforderungen an ein Rahmen-Objekt be­schreibt. Insbe­sondere muss ein java.awt.geom.Rect­angular­Shape - Objekt zurück gegeben werden, das zur Darstellung des Rahmens verwendet wird.

Normalerweise werden dessen Umrisse mit halber Strich­stärke um das eigent­liche Icon (Symbol) gezeichnet. Wenn die Eigen­schaft inverse gesetzt ist, soll jedoch der Rahmen voll­flächig in der Vorder­grund­farbe gezeichnet werden, um darauf das Symbol mit der gesetz­ten Hinter­grund­farbe (bzw. den durch Symbol fest­gelegten Far­ben) zu zeichnen.

Es kann auch die Eigen­schaft square gesetzt werden, um z. B. zu verhindern, dass ein Kreis-Rahmen durch unter­schiedliche Skalierung in eine Ellipse entartet.

Mit dem Enum Basic­Icon­Borders werden einige Rahmen-Objekte bereit­gestellt.

Test und Demo (IconBox)

Icon-Box

Im oberen Bereich der Icon-Box wird das ausge­wählte Symbolic­Icon darge­stellt. Bei Größen­änderungen der IconBox wird es entsprechend angepasst.

Im unteren Bereich können die einzelnen Einstel­lungen und Aus­wahlen zum Symbolic­Icon geändert werden.

Links gibt es eine standar­disierte Miniatur­darstel­lung (16 x 16), darunter werden die aktuelle Größe des Symbolic­Icon und die der verfüg­baren Zeichen­fläche ange­geben.

Im Mittel­teil gibt es die Auswahl­felder für Symbol und Rahmen. Als Standard sind die Werte von Basic­Symbols, Simple­Arrows bzw. Basic­Icon­Borders einge­tragen.

Wird das Programm über den Konsolen­aufruf gestartet, können als weitere Parameter die (voll­ständigen) Namen eigener Klassen übergeben werden, die das Interface Symbol imple­mentieren. Sind die zuge­hörigen .class - Dateien erreichbar, werden diese Symbole ebenfalls (am Ende) in dem Symbol-Auswahl­feld eingetragen. So kann dieses Programm auch genutzt werden, um eigene Imple­mentie­rungen zu testen.

Die beiden rechts zu sehenden Einstell­möglich­keiten sprechen für sich. Neben der Eingabe des Winkels kann auch die Einhaltung des bereits beschrie­benen festen Seiten­verhält­nisses erzwungen werden. Bei Symbolen, die dies von sich aus fordern, ist die Check­box gesetzt und kann nicht deaktiviert werden. Das Gleiche gilt bei quadra­tischen (square) Rahmen.

Neben der manu­ellen Eingabe des Winkels kann der aktuelle Winkel auch mit der Maus geändert werden. Dazu muss bei gedrückter linker Maus­taste die Maus um den Mittel­punkt des Symbols bewegt werden. Der dadurch aufge­zogene Winkel wird zum aktuell geset­zten Winkel hinzu addiert.