[J2SE] Un*x中Swing GUI中文亂碼解決方法

看板java作者 (南洋大兜蟲)時間14年前 (2010/03/31 22:55), 編輯推噓0(006)
留言6則, 4人參與, 最新討論串1/3 (看更多)
換過作業系統後還沒有想到在Swing上顯示中文會有問題 只是因為幫別人寫一個小程式,今天就好死不死被我遇見了XD 尋求解決同時搜了一下版,不過似乎版上很少人討論到這東西… 於是研究過後把我的經驗貼出來分享給大家@@ 環境: $ uname -ai FreeBSD CS329.dorm8.nctu.edu.tw 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #6: Fri Feb 12 01:37:32 CST 2010 root@:/usr/obj/usr/src/sys/TONYBSD i386 TONYBSD $ pkg_info | grep jdk diablo-jdk-1.6.0.07.02_8 Java Development Kit 1.6.0_07.02 遇到問題: Swing上除了Banner之外,其餘中文顯示出現問題 方法: $ cd <JavaHome>/jre/lib/fonts/ JavaHome 是各位jdk的安裝路徑,我這裡是/usr/local/diablo-jdk1.6.0 $ mkdir fallback 此資料夾代表存放擴充字型的地方 接下來就是把想要的字型,看是用複製的或是symbolic link,方到fallback目錄下 這時可以運用find /usr/local -name *.ttf 來尋找 以下拿我的當例子 $ find /usr/local -name "*.ttf" 發現/usr/local/lib/X11/fonts有很多字型 其中有一個資料夾叫TTF裡面有個"文鼎PL中楷",這是我要的 $ cd /usr/local/lib/X11/fonts/TTF $ ln -s *.ttf /usr/local/diablo-jdk1.6.0/jre/lib/fonts/fallback/ 這樣就完成了,之後只要在main的開頭加上以下程式碼(或寫在constructor),凡是SwingGUI(JLabel, FileChooser...etc)從此就都能正常顯示中文了,祝各位使用愉快^^: Font f = new Font("文鼎PL中楷",Font.PLAIN,12); UIManager.put("Label.font",f); UIManager.put("Label.foreground",Color.black); UIManager.put("Button.font",f); UIManager.put("Menu.font",f); UIManager.put("MenuItem.font",f); UIManager.put("List.font",f); UIManager.put("CheckBox.font",f); UIManager.put("RadioButton.font",f); UIManager.put("ComboBox.font",f); UIManager.put("TextArea.font",f); UIManager.put("EditorPane.font",f); UIManager.put("ScrollPane.font",f); UIManager.put("ToolTip.font",f); UIManager.put("TextField.font",f); UIManager.put("TableHeader.font",f); UIManager.put("Table.font",f); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.242.246

03/31 22:56, , 1F
囧…怎麼改標題……想加上"Swing"當搜尋關鍵字…
03/31 22:56, 1F

03/31 23:16, , 2F
大寫 T
03/31 23:16, 2F

03/31 23:28, , 3F
失效 是RP不夠嗎QQ
03/31 23:28, 3F

03/31 23:29, , 4F
文章列表對文章按 大寫T
03/31 23:29, 4F

03/31 23:29, , 5F
成功了 原來要在外面 感謝^^
03/31 23:29, 5F
※ 編輯: tonytonyjan 來自: 140.113.242.246 (03/31 23:37)

04/01 19:55, , 6F
這個馬賽克上的有點微妙...
04/01 19:55, 6F
文章代碼(AID): #1Bis9Cxk (java)
文章代碼(AID): #1Bis9Cxk (java)