Bidirektionale Elemente

Swing unterstützt auch den sog. BIDI-(bi-directional)-Text in Buttons, Labels und Menü-Items. Diese neue Eigenschaft von Java-Swing-Komponenten erlaubt es, Programme in einer Sprache zu schreiben, die nicht unbedingt von links nach rechts oder von oben nach unten geschrieben wird.

Einige Sprachen, wie bspw. die arabische Sprache, werden von rechts nach links geschrieben. Andere Sprachen, wie bspw. die chinesische Sprache, werden von oben nach unten geschrieben. Um die Internationalisierung von Java besser zu unterstützen, wurde der BIDI-Mechanismus entwickelt. Er bezieht sich zur Zeit auf folgende Swing-Komponenten: JLabel, JButton, JMenuItem, JCheckBoxMenuItem, JMenu, JRadioButtonMenuItem, JToggleButton, JCheckBox und JRadioButton. Die Unterstützung von Textkomponenten in Swing sowie die Unterstützung aller weiteren Swing-Komponenten ist geplant.

Um BIDI unterstützen zu können, definiert Swing zwei spezielle Konstanten: LEADING und TRAILING. Anwendungen verwenden diese zwei Konstanten, um die horizontale Textposition in einem JButton, JLabel oder JMenuItem zu spezifizieren. Diese zwei Konstanten werden durch die folgenden Methoden gesetzt: setHorizontalTextPosition() und setHorizontalAlignment().

code 

resetButton1.setHorizontalAlignment(JButton.LEADING);
resetButton2.setHorizontalTextPosition(JButton.TRAILING) ;

LEADING und TRAILING

Die Benutzung der Konstanten LEADING und TRAILING vereinfacht die kulturabhängige Positionierung des Textes, wenn die Klasse java.awt.ComponentOrientation verwendet wird. Wird ein derartiges Objekt verwendet, so bezeichnet LEADING in einer Umgebung, in der von links nach rechts geschrieben wird, links bzw. rechts, wenn von rechts nach links geschrieben wird. Umgekehrt bezeichnet TRAILING rechts, wenn von links nach rechts geschrieben wird und analog links im umgekehrten Fall. Die folgenden Abbildungen veranschaulichen die Bedeutung von TRAILING und LEADING.

kap827 

Abb. 8.27: Positionierung in einer Links-Umgebung

kap828 

Abb. 8.28: Positionierung in einer Rechts-Umgebung


SPNavRight SPNavRight SPNavRight
BuiltByNOF