紧急求助!Ubuntu下Java应用程序突然出现字体异常
1054
21
[1 楼] BlueChord
[资深泡菜]
10-6-28 16:34
偶正在做毕业论文,是一个linux下的基于Java的软件,之前已经做了几个月了,一直都很正常(用的Kubuntu 9.10)
上个月觉得Kubuntu不太好用(主要是开机时不知为何 不能通过修改rcS.d文件夹自动加载一些服务),于是换成了Ubuntu 9.10,结果整个软件的字体就全变了,变的又丑又宽。。昨天试着更新到了Ubuntu 10.04,结果问题依然存在。 让我无法理解的是,我把源代码拷到另外一台同样运行Ubuntu 9.10的笔记本上,运行软件,字体就一切正常。。 由于软件界面很复杂,所以所有的组件我全都是手动设置的坐标,现在出现这个问题,导致软件完全无法继续开发下去了。。请教各位DX,这到底是由什么引起的?linux下的Java应用程序中的字体由哪个文件控制?谢谢! |
[21 楼] BlueChord
[资深泡菜]
10-6-30 06:48
问题已解决。。算是个workaround吧,从JDK里入手的话找了两天都找不到办法。
解决方案就是——在程序里手动设置每个JComponent的字体(调用setFont()方法)。 For the record,可以在初始化完JPanel之后,调用getComponents()方法,然后在一个for循环里对得到的数组的每一个元素进行setFont操作,这样一行代码就可以设置整个JPanel里所有JComponent的字体了。不过缺点是JButton里的字体仍然无法改变。 只能这样了,幸好我用不上JButton,谢谢各位帮助! |
[21 楼] BlueChord
[资深泡菜]
10-6-30 06:48
问题已解决。。算是个workaround吧,从JDK里入手的话找了两天都找不到办法。
解决方案就是——在程序里手动设置每个JComponent的字体(调用setFont()方法)。 For the record,可以在初始化完JPanel之后,调用getComponents()方法,然后在一个for循环里对得到的数组的每一个元素进行setFont操作,这样一行代码就可以设置整个JPanel里所有JComponent的字体了。不过缺点是JButton里的字体仍然无法改变。 只能这样了,幸好我用不上JButton,谢谢各位帮助! |
[20 楼] BlueChord
[资深泡菜]
10-6-29 17:46
原文由 okpp 在2010-06-29 16:42发表 看截图能发现, 只是宽度变了, 高度基本没变. 其次, 这软件是做给别人用的.. |
[19 楼] okpp
[泡菜]
10-6-29 16:42
如果解决不了,就让程序自动把字号改小一点吧.
|
[18 楼] BlueChord
[资深泡菜]
10-6-29 07:05
真的没人知道这个问题吗?怎么试都不行,接近崩溃的边缘了。。连experts-exchange都没人会回答。。
|
[17 楼] 南船
[泡菜]
10-6-28 18:09
原文由 BlueChord 在2010-06-28 17:36发表 以前用C++时也常发现这样的事 后来发现都是字体的问题(现在大部份的包装软件都有一个捆绑字体的文件夹 不就是让咱把所设的字体打包给用户机用嘛) LZ再认真找找所用的字体 单独重拷一下试试! |
[16 楼] bigonez
[资深泡菜]
10-6-28 18:02
Java的字体,历来都是在java虚拟机里面,自己控制的。所以才有/usr/lib/jvm/java-6-sun/jre/lib/fonts/这些东西。
前面的链接中,提到的是“桥接方式”的字体设置,把Linux的字体,拉到java里来用。 好像与java/lib里的font.properties有关,也许。 http://java.sun.com/j2se/1.4.2/docs/guide/intl/fontprop.html http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html |
[15 楼] bigonez
[资深泡菜]
10-6-28 17:57
|
[14 楼] BlueChord
[资深泡菜]
10-6-28 17:36
原文由 stupidyork 在2010-06-28 17:33发表 现在基本可以排除是kubuntu的原因了,现在的问题是,另一台同样运行ubuntu 9.10的笔记本就可以完全正常的显示这些字体,而正在用的这台机器却显示不正常.. 刚才试着把那台笔记本上所有的字体文件和java字体配置文件都拷过来覆盖了,结果依然不行.真是无法理解. |
[13 楼] stupidyork
[资深泡菜]
10-6-28 17:33
原文由 BlueChord 在2010-06-28 17:22发表 有没有可能是你的ubuntu没有安装kubuntu的那个字体? |
[12 楼] BlueChord
[资深泡菜]
10-6-28 17:22
原文由 就是爱忽悠 在2010-06-28 17:15发表 嗯..的确是这样,看来是系统默认使用的字体变了. 但根据我google的结果,linux下java程序的字体都是由我刚才提到的那个文件控制的,而我两台运行ubuntu(不是kubuntu了)的电脑上那个配置文件完全相同,显示出来却不一样.. |
[11 楼] 就是爱忽悠
[泡菜]
10-6-28 17:15
原文由 BlueChord 在2010-06-28 17:00发表 看截图,似乎不是字体变肥,而是使用了不同的字体(参考小写字母a)。 我在gtk环境下使用qt软件的话,可以运行“QT4 Settings“来修改字体,不过我不清楚kde下的java是否跟qt库的字体设定相关。 |
[10 楼] BlueChord
[资深泡菜]
10-6-28 17:13
在线等..
|
[9 楼] BlueChord
[资深泡菜]
10-6-28 17:00
原文由 lihn 在2010-06-28 16:47发表 已经修改了/usr/lib/jvm/java-6-sun/jre/lib/fontconfig.properties 也就是java控制字体的配置文件 但是没用。。 谢谢! |
[8 楼] BlueChord
[资深泡菜]
10-6-28 16:57
这是刚截的图 字体变宽变大
![]() |
[7 楼] BlueChord
[资深泡菜]
10-6-28 16:55
按照无忌规矩,上图说明
这是之前在kubuntu下的截图,字体正常 ![]() |
[6 楼] lihn
[资深泡菜]
10-6-28 16:47
系统配置文件的问题
|
[5 楼] BlueChord
[资深泡菜]
10-6-28 16:45
原文由 就是爱忽悠 在2010-06-28 16:44发表 人在国外,用的英文字体。。 谢谢帮助! |
[4 楼] BlueChord
[资深泡菜]
10-6-28 16:44
原文由 stupidyork 在2010-06-28 16:41发表 谢谢帮顶! 肯定是配置文件的问题,就是不知道是哪个文件,关键是,两台电脑我都用的Ubuntu 9.10和标准的sun-java6-jdk包安装的JDK,字体也应该是一样的啊。。 我是所有的工作都在root用户下完成的。 |
[3 楼] 就是爱忽悠
[泡菜]
10-6-28 16:44
|
[2 楼] stupidyork
[资深泡菜]
10-6-28 16:41
不懂,帮顶
配置文件的问题?系统新建一个用户试试看? |