Swing vs SwingX
Last updated
Last updated
Quelle wikipedia : Swing ist ein UI-Paket/Package in Java. Es gehört zu den Java Foundation Classes (JFC), die eine Sammlung von Bibliotheken zur Programmierung von grafischen Benutzerschnittstellen UI bereitstellen. Swing baut auf dem älteren AWT auf und ist mit den AWT APIs verwoben.
Quelle oracle/javase/8 : Provides a set of "lightweight" components that, to the maximum degree possible, work the same on all platforms. For a programmer's guide to using these components, see Creating a GUI with JFC/Swing, a trail in The Java Tutorial.
Quelle rheinwerk-verlag.de tutego.de : Die SwingX-Bibliothek erweitert Swing und füget Funktionalität hinzu und stellt ganz neue UI-Komponenten bereit, etwa eine Mischung aus Tabelle und Baum (JXTreeTable).
Quelle javabeginners.de : SwingX ist ein Java-Package org.jdesktop
von SwingLabs, das auf Swing aufsetzt und eine Reihe von Komponenten bereitstellt, die die Swing-Bibliothek erheblich erweitern und ergänzen.
Nach der Übernahme von Sun durch Oracle wurden alle SwingLabs Projekte gestoppt und die Server java.net abgeschaltet. Der Code wurde als open source gerettet.
Ein konkretes Beispiel, das die Erweiterungen in SwingX zeigt, ist die Klasse org.jdesktop.swingx.JXDatePicker
. JXDatePicker erlaubt Datumseingabe im Textfeld mit Popup-Menü. Im Adempiere swing Client gibt es eine ähnliche Funktionalität, die mit viel Programmieraufwand erstellt wurde. Es sind die Klassen org.compiere.grid.ed.VDate
und Calendar
:
Zum Vergleich ein Demo Screenshot mit JXDatePicker:
Yes-No Datentypen werden in (swing) durch org.compiere.grid.ed.VCheckBox
implementiert, das von javax.swingJCheckBox
abgeleitet ist. Der Renderer für die Darstellung ist gleichzeitig Editor für die Eingabe. Diese Entwurfsentscheidung impliziert zwei Werte, eben die Yes-No-Werte.
Yes-No Datentype werden auch als Auwahlfelder genutzt. Zum Beispiel in Infofenstern. Es ist bei diesen Auswahlen nicht möglich, beide Werte zu selektieren. Zur Lösung gibt es die Listenreferenz Yes-No, die auch optional, also ohne konnkreten Wert genutzt werden kann.
Seit in Unicode 6.0 sind Emojis einheitlich kodiert und als UTF-Zeichen verfügbar. Das ist eine mögliche Alternative zur swing Darstellung. Es gibt mehrere Möglichkeiten, nur ein Beispiel:
leer für Auswahl any/unknown
⬜ U+2B1C für No
✅ U+2705 für Yes , alternativ ✔️ U+2714
So kann die Listenreferenz und der Renderer für Felder einheitlich gestaltet werden. Mit VCheckBox
und VComboBox
läßt sich das aber nicht implementieren. Statt VCheckBox
wurde JRendererLabel
(Codeschnipsel), statt VComboBox
eine Subklasse von JXComboBox
verwendet. Beide Klassen gehören zum SwingX-Paket.
zum Nachlesen Manipulating emojis in Java
JXCollapsiblePane ist von JPanel abgeleitet. Es bietet dessen Funktionalität, kann jedoch bei Bedarf animiert unsichtbar gesetzt werden.
JXFrame ist von JFrame abgeleitet, kann einen solchen problemlos ersetzen und stellt einige Erweiterungen, wie eine StatusBar und einen Zugriffstimer bereit.
JXTaskPane ist ist ein Container mit dem die schrittweise Abarbeitung von Aufgaben vorgegeben werden kann. Mehrere JXTaskPane werden üblicher- aber nicht norwendigerweise in einem JXTaskPaneContainer zusammengefasst.
JXTitledPanel ist von JPanel und JXPanel abgeleitet. Es besitzt eine Titelzeile und einen separat konfigurierbaren Inhaltsbereich.