【问题标题】:Displaying urdu characters in JTextPane在 JTextPane 中显示乌尔都语字符
【发布时间】:2011-11-29 19:59:08
【问题描述】:

如何在JTextPane 中显示单个Urdu 字符?我已将英文字符翻译成乌尔都语字符。但我找不到任何方法将这些字符正确显示到我的文本组件中。

我的目标是:

  1. 按下键盘上的键。
  2. 将该键转换为等效的乌尔都语字符。
  3. 在我的文本组件中显示它 (JTextPane)。

我已完成第 1 步和第 2 步,但无法完成最后一步。

【问题讨论】:

  • 尝试将JTextPane 的字体设置为Font.DIALOG。它有什么改变吗?
  • 我已经完成了 setText() 方法,但我的要求是在按下键时设置组件中的文本,我的意思是按下键、翻译、显示。谢谢。
  • 如果我没记错的话,这些问题可能是由于所使用的字体没有代表您希望显示的字符的字形。如果您使用的字体不能显示乌尔都语字符,它将无法工作。我之前的评论是错误的,因为我认为Font.DIALOG 字体不支持此类字符。但是,如果您尝试在JTextPane 上设置支持它的字体,是否可以解决您的问题?目前该对象上设置了什么字体?
  • 找到了另一个question,也许对你有帮助。

标签: java swing internationalization jtextpane


【解决方案1】:

3- display it in my text component that is JTextPane

source Wikipedia

以纯 UTF-8 编码的项目

import javax.swing.*;
import java.awt.*;

public class Example {

    private JFrame frameA = new JFrame("Example");
    private JTextArea textA = new JTextArea(10, 5);

    public Example() {
        frameA.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        textA.setForeground(new Color(255, 150, 150));
        textA.setText("Peace be upon you (Hello) - السلام علیکم " + "\n");
        textA.append("Peace be upon you too (Hello) - و علیکم السلام " + "\n");
        textA.append("I am happy to meet you - آپ سے مل کر خوشی ہوئی" + "\n");
        textA.append("Do you speak English? - کیا آپ انگریزی بولتے ہیں؟" + "\n");

        frameA.add(textA);
        frameA.pack();
        frameA.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Example exam = new Example();
            }
        });
    }
} 

编辑:

感谢斯塔斯

我不小心把它放到了 JTextArea

添加了 JTextPane 示例

import javax.swing.*;
import java.awt.*;

public class Example {

    private JFrame frameA = new JFrame("Example");
    private JTextPane textP = new JTextPane();

    public Example() {
        frameA.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        textP.setForeground(new Color(255, 150, 150));
        textP.setText("Peace be upon you (Hello) - السلام علیکم " + "\n"
        +"Peace be upon you too (Hello) - و علیکم السلام " + "\n"
        +"I am happy to meet you - آپ سے مل کر خوشی ہوئی" + "\n"
        +"Do you speak English? - کیا آپ انگریزی بولتے ہیں؟" + "\n");

        frameA.add(textP);
        frameA.pack();
        frameA.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Example exam = new Example();
            }
        });
    }
} 

【讨论】:

  • 你的例子是关于 JTextArea 而不是 JTextPane。
  • 感谢您的帮助,但我已经知道 setText 方法。实际上我正在开发一个 urdu 编辑器,我已经使用 setText() 方法成功地将我的字符显示到文本组件中,但是当我在其中编辑一些文本时,它会将 carret 带到最后一个位置并在末尾添加文本最后输入的单词。意味着无法编辑现有文本之间的任何文本。所以这就是为什么我认为是否有任何方法可以逐个字符地在 textPane 中显示,以便我也可以编辑文本。在这方面的任何帮助。谢谢。
  • @Muhammad Salman Farooq 你能编辑你的帖子,用你的语言放一些文本吗,嗯,你是 ComponentOrientation.RIGHT_TO_LEFT 相关的???,然后查看本教程docs.oracle.com/javase/tutorial/uiswing/layout/using.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2016-11-19
相关资源
最近更新 更多