java swing MenuItem乱码
程序员文章站
2022-03-18 18:06:20
...
用java开发一个带有托盘图标的程序,
其它模块的中文显示都是正常的,比如:
[img]http://dl2.iteye.com/upload/attachment/0098/3456/498cab01-f1b1-3bdd-854a-5fce085f20bf.jpg[/img]
就只有托盘中点击小图标时弹出的菜单中的中文是方框(中文方块),如下:
[img]http://dl2.iteye.com/upload/attachment/0098/3454/3d7c2b9d-3d3e-3e41-aa3e-690b669fa514.jpg[/img]
按照一般的经验,以为是字体没设置好,就用以下代码设置字体:
完了中文还是方块,那就用以下代码打印字体:
发现明明写着有宋体。这下郁闷了,试了一下午,还是没有搞定。
终于在网上找到了救星(参考:http://scnjl.iteye.com/blog/1282172)。
原来是myeclipse的运行参数问题,真想骂人啊我。。。
下面说说解决:
第一:
在你的具有main函数的类也即你应用运行的主类上点击右键,选择Run As中的Run Configurations,如下图:
[img]http://dl2.iteye.com/upload/attachment/0098/3458/7b0ac598-7b99-3e39-af49-7436e82c75ff.jpg[/img]
第二,在Arguments标签下的VM arguments中添加下面这行参数代码,然后点击应用。
-Dfile.encoding=GB18030
[img]http://dl2.iteye.com/upload/attachment/0098/3460/e4652643-d6eb-310d-a9e7-23eeb62384d9.jpg[/img]
在次运行
[img]http://dl2.iteye.com/upload/attachment/0098/3462/442504f9-c7f1-3078-b97c-33312dea05dd.jpg[/img]
文章来源:[url]http://hi.baidu.com/happyroad_/item/a58a969adc33a18159146149[/url]
其它模块的中文显示都是正常的,比如:
[img]http://dl2.iteye.com/upload/attachment/0098/3456/498cab01-f1b1-3bdd-854a-5fce085f20bf.jpg[/img]
就只有托盘中点击小图标时弹出的菜单中的中文是方框(中文方块),如下:
[img]http://dl2.iteye.com/upload/attachment/0098/3454/3d7c2b9d-3d3e-3e41-aa3e-690b669fa514.jpg[/img]
按照一般的经验,以为是字体没设置好,就用以下代码设置字体:
Font f = new Font("\u5fae\u8f6f\u96c5\u9ed1", Font.PLAIN, 11);//宋体
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);
完了中文还是方块,那就用以下代码打印字体:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String script[] = ge.getAvailableFontFamilyNames();
for(String s:script){
System.out.print(s+",");
}
发现明明写着有宋体。这下郁闷了,试了一下午,还是没有搞定。
终于在网上找到了救星(参考:http://scnjl.iteye.com/blog/1282172)。
原来是myeclipse的运行参数问题,真想骂人啊我。。。
下面说说解决:
第一:
在你的具有main函数的类也即你应用运行的主类上点击右键,选择Run As中的Run Configurations,如下图:
[img]http://dl2.iteye.com/upload/attachment/0098/3458/7b0ac598-7b99-3e39-af49-7436e82c75ff.jpg[/img]
第二,在Arguments标签下的VM arguments中添加下面这行参数代码,然后点击应用。
-Dfile.encoding=GB18030
[img]http://dl2.iteye.com/upload/attachment/0098/3460/e4652643-d6eb-310d-a9e7-23eeb62384d9.jpg[/img]
在次运行
[img]http://dl2.iteye.com/upload/attachment/0098/3462/442504f9-c7f1-3078-b97c-33312dea05dd.jpg[/img]
文章来源:[url]http://hi.baidu.com/happyroad_/item/a58a969adc33a18159146149[/url]