java

位置:IT落伍者 >> java >> 浏览文章

Linux下java的Swing/AWT程序乱码解决


发布日期:2018年05月21日
 
Linux下java的Swing/AWT程序乱码解决

问题描述

我编写的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字体从而就不会存在中文乱码了也省却了对所有组件单独设置的麻烦

上一篇:Java编程:常见问题汇总

下一篇:在Java程序中调用Matlab函数