熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Linux下java的Swing/AWT程序亂碼解決

2013-11-23 19:15:44  來源: Java核心技術 

  問題描述
    我編寫的JAVA程序中的Swing/AWT組件中的中文顯示都是方框而標題卻能正常顯示中文且使用   Systemoutprintln(中文字符串)能正常顯示中文
    解決思路
    可能是JRE的中文字庫不支持引起所以添加一個可以支持的中文字庫
    解決辦法
    第一步下載中文字庫我使用的是c可以直接在Windows(我用的是XP的系統)中找到入徑為C:\WINDOWS\Fonts下的c
    也可以在網站上下載 推薦天網網站
    bin/search?word=c

  第二步將中文字庫c放入Jre的字庫中操作如下
    cd <JAVA_HOME>/lib/fonts或者cd <JAVA_HOME>/jre/lib/fonts
    mkdir fallback (fallback代表存放後備語言的文件夾)
    其中<JAVA_HOME>是你安裝jdk/jre的路徑我的是/usr/lib/jdk復制或者鏈接一個中文字體至其下
    ln s /usr/share/fonts/truetype/f /usr/lib/jdk/jre/lib/fonts/fallback/f

  第三步有了上面的步驟之後就可以在代碼中編碼實現顯示中文了操作如下:
    在main 函數中的開頭處添加如下代碼
                Font f =  new Font(宋體FontPLAIN);
                UIManagerput(Labelfontf);
                UIManagerput(LabelforegroundColorblack);
                UIManagerput(Buttonfontf);
                UIManagerput(Menufontf);
                UIManagerput(MenuItemfontf);
                UIManagerput(Listfontf);
                UIManagerput(CheckBoxfontf);
                UIManagerput(RadioButtonfontf);
                UIManagerput(ComboBoxfontf);
                UIManagerput(TextAreafontf);
                UIManagerput(EditorPanefontf);
                UIManagerput(ScrollPanefontf);
                UIManagerput(ToolTipfontf);
                UIManagerput(TextFieldfontf);
                UIManagerput(TableHeaderfontf);
                UIManagerput(Tablefontf);

  以上代碼代表了在整個程序中的相關組件都使用定義好f字體從而就不會存在中文亂碼了也省卻了對所有組件單獨設置的麻煩


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26535.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.