如何在LWUIT中右对齐TextArea的内容?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我想将文本对齐TextArea到右边。我尝试了以下代码:

     Form form = new Form();
     TextArea textArea = new TextArea("Some Arabic text ...");
     textArea.setRTL(true);
     textArea.setAlignment(RIGHT);
     form.addComponent(textArea);

结果只是将滚动条移动到左侧, 但文本仍未对齐RIGHT, 请检查下图:

那么如何将内容与RIGHT

提问于
用户回答回答于

对于第一个实例可能听起来很疯狂:)但设置对齐以TextArea.LEFT解决问题,现在它已经RIGHT对齐了!

    Form form = new Form();
    TextArea textArea = new TextArea("Some Arabic text ...");
    textArea.setRTL(true);
    textArea.setAlignment(TextArea.LEFT);
    form.addComponent(textArea);

设置它LEFT使显示的文本RIGHT对齐!

或者通过删除textArea.setRTL(true)镜像显示器

    Form form = new Form();
    TextArea textArea = new TextArea("Some Arabic text ...");
    textArea.setAlignment(TextArea.RIGHT);
    form.addComponent(textArea);

对于那些在设置为RTL时对更复杂细节感兴趣的人:类 的paint方法TextArea

public void paint(Graphics g) {
    UIManager.getInstance().getLookAndFeel().drawTextArea(g, this);
}

drawTextArea在方法DefaultLookAndFeel如下:

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);

不幸的是TextArea.RIGHT值是3 但是当ta.getAbsoluteAlignment()它调用它时返回1(尽管对象的对齐是由代码设置为TextArea.RIGHT!!) 同时TextArea.Left值为1 这就是为什么它匹配开关中的值并且已经对齐RIGHT

顺便说一句,如果你设置

textArea.setAlignment(Component.RIGHT); 

这也是错误的,因为Component.RIGHT在paint方法之外的值为3而不是1!

用户回答回答于

您可以使用以下行:

TextArea textArea = new TextArea("Some Arabic text ...");
textArea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

扫码关注云+社区

领取腾讯云代金券