JBuilder光标问题的解决方案

大家常常说JBuilder在中文系统中存在光标错位的问题,都认为这是JBuilder的一个Bug,其实这实在是冤枉JBuilder了!大家讨论出来的解决方法无外乎两种:

1、将编辑器的字体改为宋体,用这种方法带来的问题是,在宋体下的英文字体实在难看,阅读起来不太顺眼;

2、就是将编辑器字体的粗体属性去掉,这样也影响代码的可读性。

其实,造成JBuilder光标错位的问题并不是Borland的错误,而是Java的宗师——Sun的罪过!大家一定知道i18n吧?在不同的区域设置中,JDK自动调用与之相对应的properties文件,而在JDK中,Sun所推出的与中文系统相对应的properties文件存在问题,在它之中没有区分英文字体的正常、粗体和斜体,从而导致了以上所说的问题,解决的方法很简单,只要将这个properties文件修改正确就可以了,修改方法如下:

在jre/lib目录中找到font.properties.zh文件,编辑这个文件并修改成如下内容:

# @(#)font.properties.zh1.16 00/10/06
#
# AWT Font default Properties for Chinese Windows
#
dialog.plain.0=Arial,ANSI_CHARSET
dialog.plain.1=\u5b8b\u4f53,GB2312_CHARSET
dialog.plain.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.plain.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bold.0=Arial Bold,ANSI_CHARSET
dialog.bold.1=\u5b8b\u4f53,GB2312_CHARSET
dialog.bold.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bold.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialog.italic.0=Arial Italic,ANSI_CHARSET
dialog.italic.1=\u5b8b\u4f53,GB2312_CHARSET
dialog.italic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.italic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bolditalic.0=Arial Bold Italic,ANSI_CHARSET
dialog.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
dialog.bolditalic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bolditalic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.plain.0=Courier New,ANSI_CHARSET
dialoginput.plain.1=\u5b8b\u4f53,GB2312_CHARSET
dialoginput.plain.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.plain.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.bold.0=Courier New Bold,ANSI_CHARSET
dialoginput.bold.1=\u5b8b\u4f53,GB2312_CHARSET
dialoginput.bold.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.bold.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.italic.0=Courier New Italic,ANSI_CHARSET
dialoginput.italic.1=\u5b8b\u4f53,GB2312_CHARSET
dialoginput.italic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.italic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.bolditalic.0=Courier New Bold Italic,ANSI_CHARSET
dialoginput.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
dialoginput.bolditalic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.bolditalic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
serif.plain.0=Times New Roman,ANSI_CHARSET
serif.plain.1=\u5b8b\u4f53,GB2312_CHARSET
serif.plain.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
serif.plain.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
serif.bold.0=Times New Roman Bold,ANSI_CHARSET
serif.bold.1=\u5b8b\u4f53,GB2312_CHARSET
serif.bold.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
serif.bold.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
serif.italic.0=Times New Roman Italic,ANSI_CHARSET
serif.italic.1=\u5b8b\u4f53,GB2312_CHARSET
serif.italic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
serif.italic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
serif.bolditalic.0=Times New Roman Bold Italic,ANSI_CHARSET
serif.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
serif.bolditalic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
serif.bolditalic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.plain.0=Arial,ANSI_CHARSET
sansserif.plain.1=\u5b8b\u4f53,GB2312_CHARSET
sansserif.plain.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.plain.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.bold.0=Arial Bold,ANSI_CHARSET
sansserif.bold.1=\u5b8b\u4f53,GB2312_CHARSET
sansserif.bold.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.bold.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.italic.0=Arial Italic,ANSI_CHARSET
sansserif.italic.1=\u5b8b\u4f53,GB2312_CHARSET
sansserif.italic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.italic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.bolditalic.0=Arial Bold Italic,ANSI_CHARSET
sansserif.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
sansserif.bolditalic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
sansserif.bolditalic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.plain.0=Courier New,GB2312_CHARSET
monospaced.plain.1=\u5b8b\u4f53,GB2312_CHARSET
monospaced.plain.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.plain.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.bold.0=Courier New Bold,GB2312_CHARSET
monospaced.bold.1=\u5b8b\u4f53,GB2312_CHARSET
monospaced.bold.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.bold.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.italic.0=Courier New Italic,GB2312_CHARSET
monospaced.italic.1=\u5b8b\u4f53,GB2312_CHARSET
monospaced.italic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.italic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.bolditalic.0=Courier New Bold Italic,GB2312_CHARSET
monospaced.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
monospaced.bolditalic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
monospaced.bolditalic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
# name aliases
#
#alias.timesroman=serif
#alias.helvetica=sansserif
#alias.courier=monospaced
# for backward compatibility
#timesroman.0=Times New Roman,ANSI_CHARSET
#helvetica.0=Arial,ANSI_CHARSET
#courier.0=Courier New,ANSI_CHARSET
zapfdingbats.0=WingDings,SYMBOL_CHARSET
# font filenames for reduced initialization time
#
filename.\u5b8b\u4f53=SIMSUN.TTF
filename.Arial=ARIAL.TTF
filename.Arial_Bold=ARIALBD.TTF
filename.Arial_Italic=ARIALI.TTF
filename.Arial_Bold_Italic=ARIALBI.TTF
filename.Courier_New=COUR.TTF
filename.Courier_New_Bold=COURBD.TTF
filename.Courier_New_Italic=COURI.TTF
filename.Courier_New_Bold_Italic=COURBI.TTF
filename.Times_New_Roman=TIMES.TTF
filename.Times_New_Roman_Bold=TIMESBD.TTF
filename.Times_New_Roman_Italic=TIMESI.TTF
filename.Times_New_Roman_Bold_Italic=TIMESBI.TTF
filename.WingDings=WINGDING.TTF
filename.Symbol=SYMBOL.TTF
# Default font definition
#
default.char=2751
# Static FontCharset info.
#
#fontcharset.dialog.0=sun.io.CharToByteCp1252
fontcharset.dialog.1=sun.io.CharToByteGBK
fontcharset.dialog.2=sun.awt.windows.CharToByteWingDings
fontcharset.dialog.3=sun.awt.CharToByteSymbol
#fontcharset.dialoginput.0=sun.io.CharToByteCp1252
fontcharset.dialoginput.1=sun.io.CharToByteGBK
fontcharset.dialoginput.2=sun.awt.windows.CharToByteWingDings
fontcharset.dialoginput.3=sun.awt.CharToByteSymbol
#fontcharset.serif.0=sun.io.CharToByteCp1252
fontcharset.serif.1=sun.io.CharToByteGBK
fontcharset.serif.2=sun.awt.windows.CharToByteWingDings
fontcharset.serif.3=sun.awt.CharToByteSymbol
#fontcharset.sansserif.0=sun.io.CharToByteCp1252
fontcharset.sansserif.1=sun.io.CharToByteGBK
fontcharset.sansserif.2=sun.awt.windows.CharToByteWingDings
fontcharset.sansserif.3=sun.awt.CharToByteSymbol
#fontcharset.monospaced.0=sun.io.CharToByteCp1252
fontcharset.monospaced.1=sun.io.CharToByteGBK
fontcharset.monospaced.2=sun.awt.windows.CharToByteWingDings
fontcharset.monospaced.3=sun.awt.CharToByteSymbol
# Exclusion Range info.
#
exclusion.dialog.plain.0=00a0-f8ff
exclusion.dialog.italic.0=00a0-f8ff
exclusion.dialog.bold.0=00a0-f8ff
exclusion.dialog.bolditalic.0=00a0-f8ff
exclusion.dialoginput.plain.0=00a0-f8ff
exclusion.dialoginput.italic.0=00a0-f8ff
exclusion.dialoginput.bold.0=00a0-f8ff
exclusion.dialoginput.bolditalic.0=00a0-f8ff
exclusion.serif.plain.0=00a0-f8ff
exclusion.serif.italic.0=00a0-f8ff
exclusion.serif.bold.0=00a0-f8ff
exclusion.serif.bolditalic.0=00a0-f8ff
exclusion.sansserif.plain.0=00a0-f8ff
exclusion.sansserif.italic.0=00a0-f8ff
exclusion.sansserif.bold.0=00a0-f8ff
exclusion.sansserif.bolditalic.0=00a0-f8ff
exclusion.monospaced.italic.0=00a0-f8ff
exclusion.monospaced.bold.0=00a0-f8ff
exclusion.monospaced.bolditalic.0=00a0-f8ff
# charset for text input
# inputtextcharset=GB2312_CHARSET

保存后,一切问题就解决了!

这种方法也适用于任何相同的问题。

[题外话]这种错误SUN真的应该好好反省一下了,希望以后他们做的东西能够测试更好一些。

时间: 2024-11-02 18:50:09

JBuilder光标问题的解决方案的相关文章

android-用户输入完成后,把编辑框中的光标移除

问题描述 用户输入完成后,把编辑框中的光标移除 在程序的布局中有一个 EditText.当用户在编辑框中输入一些文本后,然后点击"完成"键后,我想把编辑框中的闪烁光标去掉.我查相关资料,使用如下的代码,可以还是没有实现,闪烁的光标依然存在. private class MyOnKeyListener implements OnKeyListener { public boolean onKey(View v int keyCode KeyEvent event) { if (event

求解webform里如何实现 winform里输入时的光标闪动?

问题描述 求解webform里如何实现winform里输入时的光标闪动?如题请问使用CSS实现还是JS实现实现方法]谢谢 解决方案 解决方案二:我一直以为是系统设置了输入时隐藏光标所致解决方案三:帮顶有点难度那好像是自带的解决方案四:up!!!css不熟!!解决方案五:UP!!!解决方案六:在什么东西上实现啊你是要在某某标签上?还是某某控件上?下面是让任意标签变成可以输入的状态:<HEAD><SCRIPT>functionchgSpan(){currentState=oSpan.i

在线等,急急急急,iframe在线编辑器,获得光标前面一个字

问题描述 iframe在线编辑器,获得光标前面一个字 解决方案 本帖最后由 a9784882 于 2011-11-02 11:45:59 编辑解决方案二:stringstr="";str=str.Substring(str.Length-1,1); 解决方案三:该回复于2011-11-03 08:40:34被版主删除解决方案四:你不会是想自己开发吧?装个fckeditor或ewebeditor就测轻松搞定.解决方案五:找下textRange方面的资料,,不过还是感觉你的这个问题解决不了

RichTextBox中,怎么样获得光标的位置

问题描述 RichTextBox中,怎么样获得光标的位置 解决方案 解决方案二:MsgBoxText1.SelStart解决方案三:RichTextBox1.SelectionStart

css解决input里面光标位置靠上问题

最近再做一个项目,发现input输入框内的光标有点怪异:不输入文字的时候,光标不处在input框的上下居中位置,而是偏上,当输入文字以后就变为正常了,开始我以为是浏览器的原因,但后来到各个浏览器查看一番,发现还真有点不同,于是百度了一下,找到了相关的文档读了读,才发现其中奥秘. 在Chrome浏览器中,当设置了line-height时,input无文字,光标高度与line-height一致:input有文字,光标高度从input顶部到文字底部.当没有设置line-height时,则是与font-

jBuiler 4白皮书(来自inprise网站)

纯Java可视化开发 JBuilder 已成为当今开发者首选的Java?开发环境.它将Web和企业应用开发与灵活高效的团队开发环境结合在一起,为开发者提供了一个端对端应用开发环境.JBuilder支持最新的Java标准,它的可视化工具和向导使应用开发变得方便快捷.JBuilder同时支持Windows.Linux 和Solaris 三种开发平台.由于JBuilder具有开放性.可扩展性.遵循标准等特点,使得用JBuilder开发符合J2EE标准的电子商务应用.分发Internet分布式的关键性企

页面载入,输入点定位到textbox

问题描述 页面载入,输入点定位到textbox例如google打开就可以输入 解决方案 解决方案二:用js设置文本框得到光标就可以了解决方案三:txtUserName.Focus();解决方案四:document.getemelentbyid("textboxid").focus()未测试解决方案五:谢谢,解决了解决方案六:在js写一个方法实现就行了!解决方案七:jffffffffffffffffffffffffffffffffffffff

ios-判断用户是否存在时遇到了问题

问题描述 判断用户是否存在时遇到了问题 项目的注册模块需要在注册前验证用户填写的用户名是否已经被注册了,, 我写了个函数来验证 我是想在输入框结束编辑之前访问服务器,进行验证, 也就是下面这个方法 -(BOOL)textFieldShouldEndEditing:(UITextField *)textField: 等服务器返回结果后,再根据结果返回yes 或no 给-(BOOL)textFieldShouldEndEditing:(UITextField *)textField: +(bool)

vb中mshflexgrid控件固定某一列

问题描述 vb中mshflexgrid控件固定某一列 mshflexgrid 怎么固定某一列不能用text选中,但是可以根据滚动条移动 解决方案 在 cellenter事件里判断,把光标移除 解决方案二: VB中MSHFlexGrid控件的应用