最近在维护swing程序时,有客户发现英文版xp下存在乱码问题(由于某些原因用户不能换系统),一开始以为是操作
系统设置问题,但用户说其他软件中文显示都正常,于是
找了VMware装了英文版的windows xp 一试 果然是乱码。
分析原因如下:其他软件中文显示都正常 说明os中文字库已装,估计是和jre有关,于是
就找和jre有关编码集问题
有人说和编译时候的encoding参数有关
样例代码在中文平台上编译,生成zhclass
样例代码在英文平台上编译,输出enclass
(1) zhclass在中文平台上执行ok,但是在英文平台上不行
(2) enclass在英文平台上执行ok,但是在中文平台上不行
出处:http://oznyang.iteye.com/blog/30697
我一直没找到这个参数怎么会使用,但是找到了执行时设置支付编码集的命令
-D<name>=<value> set a system property
如: javaw -Dfile.encoding=GBK -cp xx.jar com.xx.main
System.getProperties() 中和字符集有关的变量有:
file.encoding
sun.io.unicode.encoding
sun.jnu.encoding
user.country
user.languag
进尝试发现file.encoding有对控制台的System.out.println有用加了后无乱码,但是界面上乱码依旧。
必须当作启动参数设置,在程序中System.setProperties("file.encoding", "GBK")无效果
后来继续网上搜索,找到原因如下:
swing中UIManager根据操作系统语言设置的不同会使用了默认的字体
英文版windows xp下默认字体为:
family=Tahoma,name=Tahoma,style=plain,size=11
Tahoma好像不支持中文乱码全是方框需替换成本地指定的能显示中文的字体样式 比如: 宋体
Font font = new Font("宋体", Font.PLAIN, 12);
Enumeration<Object> keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
if (UIManager.get(key) instanceof FontUIResource){
UIManager.put(key, new FontUIResource(font));
}
else if(UIManager.get(key) instanceof Font){
UIManager.put(key, font);
}
//System.out.println("key:"+key+" value:"+UIManager.get(key));
}
启动时强制指定UIManager中的字体设置即可解决界面上的方框乱码,
这时发现 标题栏还是乱码。。。
又继续搜索,发现标题栏是使用皮肤包substance的标题栏
JFrame.setDefaultLookAndFeelDecorated(true);
找了半天也没找到解决方法,目前只能使用swing自带的标题栏,不加上面语句就可以正常显示。
附件为测试demo
分享到:
相关推荐
在Windows系统下解决Swing中文乱码问题的步骤与Linux系统有所不同,但同样重要。 **第一步:** 打开控制面板,进入“区域和语言”选项。 **第二步:** 在“管理”标签页下,点击“更改系统区域设置”。 **第三步...
在压缩包文件"SWING乱码font.zip"中,可能包含了用于解决Swing乱码问题的示例代码、自定义字体文件或其他相关资源。解压后,你可以根据提供的示例来调整你的Swing应用,确保文本的正确显示。如果遇到问题,可以通过...
本文将详细探讨Linux下Java Swing程序中文乱码的原因及解决方案,帮助开发者有效解决此类问题。 ### 一、问题根源分析 #### 1. 编码设置不一致 在Linux系统中,Java应用的字符编码可能与系统默认的字符编码不同,...
本手册是O'Reilly出版的《Java Swing》英文版,以PDF格式提供,是深入理解和学习Swing不可或缺的资源。 在Swing中,你可以找到各种组件,如按钮(JButton)、文本框(JTextField)、滚动面板(JScrollPane)、菜单...
Swing是Java GUI库的一部分,用于构建桌面应用程序。在某些情况下,用户可能会遇到“白屏”问题,这通常是由于Swing组件渲染...如果可能,最好从官方渠道获取最新的JRE,并尝试通过调整代码或者升级JDK版本来解决问题。
- **专业Swing开发者**:对于已经有一定Swing基础的开发者而言,本书可以作为一本宝贵的参考书籍,帮助他们深入理解和解决实际开发中的复杂问题。 - **Java GUI开发人员**:无论是对于正在学习Swing的新手还是已经...
Swing应用框架1.3英文版API是Java开发中用于构建图形用户界面(GUI)的重要工具,它基于Java Foundation Classes (JFC) 并且扩展了AWT(Abstract Window Toolkit)库,提供了更为丰富的组件和功能。这个API文档通常...
Java运行环境(JRE,Java Runtime Environment)是执行Java应用程序所必需的基础软件组件,它包含了Java虚拟机(JVM)以及Java核心类库。...对于需要运行旧版Swing应用的用户,这是一个理想的解决方案。
在这个“java swing简单版qq”项目中,开发者利用Swing构建了一个基础的即时通讯应用,模拟了QQ的基本功能,如聊天和更换皮肤。下面我们将深入探讨Java Swing以及如何使用它来实现这样的应用程序。 首先,Swing是...
Swing E版是一款基于Java Swing库的扩展工具,它提供了更丰富的组件和功能,以帮助开发者构建更加美观、功能强大的图形用户界面(GUI)。在Java编程中,Swing是Java Foundation Classes (JFC)的一部分,用于创建桌面...
描述中提到的文章链接虽然无法直接访问,但从上下文可以推测,该文章可能详细记录了作者在尝试使用GraalVM编译Swing应用时遇到的困难,以及如何逐步解决问题的过程。Swing是Java的一个图形用户界面(GUI)工具包,...
总之,“精通 JAVASWING中文版”会带你全面掌握Java Swing 的核心概念和技术,让你有能力创建功能丰富且用户体验良好的Java桌面应用程序。无论你是初学者还是有经验的开发者,这本书都将是你提升 Swing 技能的重要...
压缩包中的`simsun.ttc`文件是宋体的TrueType字体集合,它可能用于解决Java图形界面(如Swing或JavaFX)显示中文字符的问题。如果你的Java应用需要显示中文界面,确保已安装并加载了支持中文的字体,例如SimSun...
本文将深入探讨"Swing开发常见难点疑点解决之道",通过具体的示例和代码来解答这些问题。 首先,我们关注的是"可编辑JList"。JList是Swing中的一个组件,通常用于展示不可编辑的项目列表。但有时我们可能需要让用户...
`zysong.ttf` 文件可能是一个包含中文字符的TrueType字体文件,可以尝试在JFreechart中加载这个字体以解决乱码问题。 **解决方案** 1. **检查Java版本**:确认Java版本与JFreechart兼容,并更新到最新稳定版本。 ...
"javaswing版本远程控制"涉及了Java桌面应用开发、网络通信、远程操作以及版本管理等多个IT领域的知识,需要开发者具备扎实的Java基础,熟悉网络编程和远程控制原理,并能灵活运用各种工具和技术来实现定制化的远程...
swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...
JavaSwing_O-Reilly英文版,好看的东西要分享
这个特定的版本,被称为“JFreeChart无中文乱码版本”,特别优化了解决在处理中文字符时可能出现的乱码问题,使得在中文环境下使用JFreeChart变得更加友好。 JFreeChart支持多种类型的图表,包括但不限于柱状图、...