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:

enter image description here

Wie man den Inhalt also an die ausrichtet RIGHT ?

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top