簡體   English   中英

如何在JTextArea中顯示日語字符

[英]How to display japanese characters in JTextArea

顯示日文字符時JTextArea有奇怪的行為 - 我得到了眾所周知的空白矩形而不是漢字。 最奇怪的是JTextField完美地顯示它們(在兩種情況下我使用“Tahoma”字體系列)。 另外,如果我把這段代碼:

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

...在我將日語字符串寫入problemTextArea之前,它會顯示漢字!

PS抱歉我的英文。

Upd:我正在使用Windows

問題是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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM