Wie kann ich den Inhalt von TextArea in LWUit ausrichten?
-
25-10-2019 - |
Frage
Ich möchte den Text in a ausrichten TextArea
Nach rechts. Ich habe den folgenden Code ausprobiert:
Form form = new Form();
TextArea textArea = new TextArea("Some Arabic text ...");
textArea.setRTL(true);
textArea.setAlignment(RIGHT);
form.addComponent(textArea);
Das Ergebnis war nur die Schriftrolle nach links,
Aber der Text ist immer noch nicht ausgerichtet RIGHT
,
Überprüfen Sie das Bild unten:
Wie man den Inhalt also an die ausrichtet RIGHT
?
Lösung
Es mag für die erste Instanz verrückt klingen :) aber die Ausrichtung auf die Ausrichtung festlegen TextArea.LEFT
löste das Problem und jetzt ist es RIGHT
ausgerichtet !
Form form = new Form();
TextArea textArea = new TextArea("Some Arabic text ...");
textArea.setRTL(true);
textArea.setAlignment(TextArea.LEFT);
form.addComponent(textArea);
Einstellen auf LEFT
macht den angezeigten Text RIGHT
ausgerichtet !
Oder durch Entfernen der textArea.setRTL(true)
das spiegelt das Display wider
Form form = new Form();
TextArea textArea = new TextArea("Some Arabic text ...");
textArea.setAlignment(TextArea.RIGHT);
form.addComponent(textArea);
Für diejenigen, die interessiert sind kompliziertere Details Wenn es auf RTL eingestellt ist:
das paint
Methode von TextArea
Klasse ist
public void paint(Graphics g) {
UIManager.getInstance().getLookAndFeel().drawTextArea(g, this);
}
Und drawTextArea
Methode in DefaultLookAndFeel
ist wie folgt:
int align = ta.getAbsoluteAlignment();
// remaining code is here in initial source
switch(align) {
case Component.RIGHT:
x = ta.getX() + ta.getWidth() - rightPadding - f.stringWidth(displayText);
break;
// remaining code is here in initial source
}
g.drawString(displayText, x, y);
Leider TextArea.RIGHT
Wert ist 3
Aber wenn man anruft ta.getAbsoluteAlignment()
Es gibt 1 zurück (trotzdem wird die Ausrichtung des Objekts durch Code auf festgelegt TextArea.RIGHT
!!)
In der Zwischenzeit TextArea.Left
Wert ist 1
Deshalb entsprach es dem Wert im Switch und war darauf ausgerichtet RIGHT
Übrigens, wenn Sie festlegen
textArea.setAlignment(Component.RIGHT);
Es wird auch falsch sein, weil Component.RIGHT
Außerhalb der Farbmethode hat der Wert 3 nicht 1!
Andere Tipps
Sie müssen nur 'textArea.Right' anstelle von 'rechts' schreiben
textArea.setAlignment(TextArea.RIGHT);
Sie können die folgende Zeile verwenden:
TextArea textArea = new TextArea("Some Arabic text ...");
textArea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);