当前位置:  开发笔记 > 编程语言 > 正文

如何在JTextArea中显示日语字符

如何解决《如何在JTextArea中显示日语字符》经验,为你挑选了1个好方法。

显示日文字符时JTextArea有奇怪的行为 - 我得到了众所周知的空白矩形而不是汉字.最奇怪的是JTextField完美地显示它们(在两种情况下我使用"Tahoma"字体系列).另外,如果我把这段代码:

    Font f = new Font("123", Font.PLAIN, 12); // This font doesn't exists
    problemTextArea.setFont(f);

...在我将日语字符串写入problemTextArea之前,它会显示汉字!

PS抱歉我的英文.

Upd: 我正在使用Windows



1> Mario Ortegó..:

问题是JTextArea使用与JTextField不同的默认字体.我在写的一个必须支持多语言的应用程序中遇到了同样的问题.

您遇到问题的原因是JTextArea通常用于显示单倍间距字体,例如Courier New.通常,Java不包含用于显示汉字的单行间隔图形字体的附加映射.

你有的修复工作,因为没有名为"123"的字体,所以默认是采取(对话框)."对话框"字体在内部映射到平台的font.properties文件中的字体系列.这将是JTextField使用的相同字体.

我有以下修复,以确保在所有图形组件中使用相同的字体定义.您还可以找到JTextArea的特定键并进行更改.这样您就不必担心任何组件的字体,它们将使用对话框进行初始化.

Object fontDefinition = new UIDefaults.ProxyLazyValue("javax.swing.plaf.FontUIResource", null, new Object[] { "dialog", new Integer(Font.PLAIN), new Integer(12) });

java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
    Object key = keys.nextElement();
    Object value = UIManager.get(key);
    if (value instanceof javax.swing.plaf.FontUIResource) {
        UIManager.put(key, fontDefinition);
    }
}

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有