再谈Java(JBuilder)中的光标问题

ilovehuhu 2003-11-26 04:04:41
JBuilder中的光标问题由来已久,从JB4(我所用过的第一个JB版本,另:本文中JB乃JBuilder的缩写)到最新的JBX,凡是代码中有粗体或者斜体字的行,光标总是出现在错误的位置上,给编成带来诸多不便,影响程序员的心情和效率。早期的解决办法主要是修改JBuilder本身的代码显示方案,或者更改字体,或者将所有的粗体和斜体及粗斜体改为正常字体。虽然这些方法可以基本解决光标位置不对的问题,但都在一定程度上影响的视觉效果或者降低了JB的代码语法标亮功能,例如在JBX中子类如果覆盖了的父类中定义的某个方法,那么在子类中该方法名是斜体的。后来随着JB的发展普及,受此问题影响的人越来越多,越来越让人觉得不爽,因此有高手对此问题追根溯源,原来问题真正的根源在于JRE而非JB。在JRE中有些针对不同国家地区和语言而定义的字体属性文件(<jre_dir>/lib/font.properties*),其中和我国有关的font.properties.zh文件的内容有些不妥,从而导致了上述问题。这同时也解释了为什么其他国家及港台地区的JB用户几乎没有出现过此类问题(除非她的操作系统中所在区域选在中国大陆)。但为什么只有JB出现了这类问题,而其他运行于JRE的Java程序没有此类问题呢?主要是其他程序很少用到粗体和斜体,另外和所用的字体也有关系,只有使用了font.properties.zh中所列的组合字体(Component Font)的粗体和斜体时才会出现光标错位。网上之前出现过对这个文件的修改方案,例如添加NEED_CONVERTED和修改Exclusion Ranges,也不能从根本上解决该问题。

由于只有中国大陆区域的用户碰到此类问题,因此其他区域对应的font.properties*文件应该没有问题。经过和font.properties文件的对比,可以看出font.properties.zh中究竟哪里出了问题——组合字体映射部分(Component Font Mappings)中对于每种字体的粗体和斜体,都映射到了常规字体,而没有映射到相应的粗体和斜体,由此导致了JB等应用程序在对粗体或者斜体字符所占宽度计算时,是按照常规字体的宽度进行的,进而导致了光标的显示位置和实际位置不符。如dialoginput.bold.0,对应于字体为Courier New,粗体英文字母,正确的映射应该是dialoginput.bold.0=Courier New Bold,ANSI_CHARSET,而在font.properties.zh中映射为dialoginput.bold.0=Courier New,ANSI_CHARSET(注:没有bold)。

针对这种情况,可以对font.properties.zh进行修改,将所有不正确的映射分别加上bold,Italic或者bold Italic。这样JB和其他Java程序就不会有光标错位的问题了。

还应注意的是,真正与中国大陆地区对应的font.properties文件名应为font.properties.zh_CN,由于JRE中默认没有这个文件,因此会使用范围最接近的文件font.properties.zh。所以如果<jre_dir>/lib/下有font.properties.zh_CN,则应优先修改该文件。另外,font.properties.zh.98文件可能是Windows 9X系统中所使用的,因此如果操作系统为Windows 9X,应修改该文件。
...全文
77 111 打赏 收藏 转发到动态 举报
写回复
用AI写文章
111 条回复
切换为时间正序
请发表友善的回复…
发表回复
dachangtui 2004-03-11
  • 打赏
  • 举报
回复
一个字:牛B
nogood3 2004-03-10
  • 打赏
  • 举报
回复
woyeyao
theodo 2004-03-04
  • 打赏
  • 举报
回复
Thank you!!收藏
程序员梁叔 2004-03-04
  • 打赏
  • 举报
回复
up
iceman19821982 2004-03-01
  • 打赏
  • 举报
回复
牛帖,up
gggggame 2004-02-29
  • 打赏
  • 举报
回复
mark
flyfan 2004-02-28
  • 打赏
  • 举报
回复
thx~
homey123 2004-02-26
  • 打赏
  • 举报
回复
mark
两种方式都用了!
王国凡 2004-02-21
  • 打赏
  • 举报
回复
You could use an English OS.
孬毛毛 2004-02-18
  • 打赏
  • 举报
回复
多谢~~收藏~~顶~~~
ailys 2004-02-18
  • 打赏
  • 举报
回复
同意 teekid() 老哥的方法,这种颜色不错,我也喜欢!
shine333 2004-02-15
  • 打赏
  • 举报
回复
非常非常非常非常非常非常非常好,问题99.9%解决了,我怎么从来没有想到呢
除了jbx中code folding的时候,那个框(public void ... 12 lines collapsed) 和selection text那个部分不一致,不知道别人有没有这个问题
jein 2004-02-12
  • 打赏
  • 举报
回复
收藏一下
fireiceman 2004-02-11
  • 打赏
  • 举报
回复
mark
heghog 2004-02-09
  • 打赏
  • 举报
回复
没办法!
支持好象不是很好!
zh1029 2004-02-06
  • 打赏
  • 举报
回复
我想这与我们都用盗版不无关系,所以他们也可能觉得没有必要修改这个bug
icy_csdn 2004-02-05
  • 打赏
  • 举报
回复
~佩服ing~


cx_super 2004-02-02
  • 打赏
  • 举报
回复
都是高手,学习加收藏
zhangleibbq 2004-01-29
  • 打赏
  • 举报
回复
up
luckycat 2004-01-29
  • 打赏
  • 举报
回复
太老了!
加载更多回复(91)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧