gpt4 book ai didi

java - 强制 JTextArea 中的 RTL 顺序

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:24 25 4
gpt4 key购买 nike

我试图强制 JTextArea(以及我的应用程序中的其他文本组件)允许用户输入 RTL。这对于阿拉伯语等输入可以正确工作,但我还必须能够将其设置为将其应用于标准文本。因此,如果我输入“你好!”它将显示为“!olleh”。

我尝试使用 applyOrientation() 方法并将文本区域设置为具有 RTL,如下所示:

jTextPane1.getDocument().putProperty(
TextAttribute.RUN_DIRECTION,
TextAttribute.RUN_DIRECTION_RTL);

到目前为止我还没有成功。有人建议我尝试 Bidi 库,但这些库似乎专注于对已经是双向的文本的解释。当我应用上述内容时,我得到了右对齐的文本,但就字符顺序而言它仍然是 LTR。我在这里缺少什么吗?有没有办法设置 Java 本身在查找文本输入应该移动克拉的方向时检查的值?

最佳答案

组件方向怎么样?

boolean rtl = true;
t_text.setComponentOrientation(rtl ?
ComponentOrientation.RIGHT_TO_LEFT :
ComponentOrientation.LEFT_TO_RIGHT);

你说的你好!并且!olleh 不会发生这样的事情:) 这是反向而不是从右到左。 I am Soley! 的 RTL 是 !Soley am I,它显示从右到左开始的单词。

顺便说一句,使用JTextPane代替JTextArea,我相信JTextArea不支持RTL。这是我在想制作 JtextPane RTL 时在某处读到的内容。

好吧,如果你想反转输入字符串,请使用:

public static String getReverse(String str) {
return new StringBuffer(str).reverse().toString();
}

但是,如果您想反转所有单词,请在反转整个输入后拆分它们:

String[] list = getReverse("I am soley!").split(" ");
String[] ret = new String[list.length];
int len = list.length;
for(String w:list){
ret[--len] = s;
}
list = null;
// you have your words reversed in ret array

关于java - 强制 JTextArea 中的 RTL 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30579798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com