作者tonytonyjan (南洋大兜虫)
看板java
标题[J2SE] 在Un*x中的中文乱码解决方法
时间Wed Mar 31 22:55:05 2010
换过作业系统後还没有想到在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
1F:→ tonytonyjan:囧…怎麽改标题……想加上"Swing"当搜寻关键字… 03/31 22:56
2F:→ tkcn:大写 T 03/31 23:16
3F:→ tonytonyjan:失效 是RP不够吗QQ 03/31 23:28
4F:→ TonyQ:文章列表对文章按 大写T 03/31 23:29
5F:→ tonytonyjan:成功了 原来要在外面 感谢^^ 03/31 23:29
※ 编辑: tonytonyjan 来自: 140.113.242.246 (03/31 23:37)
6F:→ ogamenewbie:这个马赛克上的有点微妙... 04/01 19:55