现象
swing写界面时,觉得太丑,使用weblaf换了界面。但中文总是乱码。
如果不使用weblaf,则是正常的。
原因
google了一把,并在项目主页中查看了下。
swing默认字体中有中文。
而weblaf设置的默认字体中没有中文。
系统找不到中文在字体中对的字符后,就显示乱码。
这是com.alee.laf.WebFonts的默认字体设置
static {
if (SystemUtils.isWindows()) {
fonts.put("control", new FontUIResource("Tahoma", 0, 12));
fonts.put("alert", new FontUIResource("Segoe UI", 0, 13));
fonts.put("menu", new FontUIResource("Segoe UI", 0, 12));
fonts.put("accelerator", new FontUIResource("Segoe UI", 0, 12));
fonts.put("title", new FontUIResource("Segoe UI", 0, 14));
fonts.put("text", new FontUIResource("Tahoma", 0, 12));
fonts.put("tooltip", new FontUIResource("Segoe UI", 0, 12));
else if(...
//...
}
解决方法
自己把weblaf中的字体设置下。
如下面代码,设置为隶书。就正常显示中文。
WebLookAndFeel.globalControlFont = new FontUIResource("隶书",0, 12);
// WebLookAndFeel.globalTooltipFont
// WebLookAndFeel.globalAlertFont
// WebLookAndFeel.globalMenuFont
// WebLookAndFeel.globalAcceleratorFont
// WebLookAndFeel.globalTitleFont
// WebLookAndFeel.globalTextFont
WebLookAndFeel.install ();

本文讨论了swing界面中文乱码问题的原因,并提供了通过调整weblaf默认字体设置来解决乱码的方法。
19万+

被折叠的 条评论
为什么被折叠?



