Re: [问题] Swing 的中文输入问题 in MAC OS

楼主: sbrhsieh (十年一梦)   2014-06-02 18:18:21
※ 引述《pupuliao (pupu)》之铭言:
: 最近 再尝试把我的小程式 从windows 移植到 MAC OS 上
: 再针对 档案路径、换行符号 等等相容性修正后
: 找了网友测试
: 最后回报结果却是 Swing UI 接口出了问题
: 似乎无法正确输入中文....
: 询问了google 似乎是 万年老BUG 除了改用其他UI 系统之外?
: 所以想来这里请问一下 有在不更改UI架构下 解决问题吗?
: 简单来说 就是 帮我测试MAC 版的朋友说
: 他是使用 YAHOO 输入法
: 无法正常输入中文
: swing.JTextField 的框格中,他输入中文,会被分拆成 注音....
我没有使用 Yahoo 输入法的经验,但可以理解你朋友描述的现象。
发生这种情况应该只会在使用特定的输入法,就是那种可以设定(或只能是)成
在文字输入区域直接拼写的模式的输入法。
我都是使用 MacOS X(10.4/10.5/10.7/10.9)内建的输入法,它也是这种模式(拼字
的过程是直接出现在 text 元件处),未出现你所描述的情况(在 CPython for MacOS
的 IDEL 界面里输入中文则是如同你描述的)。
故我认为这有可能不是 JRE 在不同的平台的差异所致(是不是 JRE implementation
有关尚不确定,我使用 Apple 改的 JRE 1.5/1.6 与 sun JRE 1.7 都没问题就是),
而是跟你的程式如何去操作 text component 有关,也就是说你的程式在 Windows
上的 JRE 也可能会有相同的现象发生,只是你没观察到,比如你在 Windows 上使用
的输入法是在额外的输入法视窗做拼字过程,那么就不会出现你描述的不正常情况。
建议先采下列步骤来更加确定问题的症结处所在:
1. 在 MacOS/Windows 上试试其他的输入法。
2. 你的 Java 程式是单纯使用 JTextComponent 类的元件来收集文字 input 吗?
有没有使用客制的 Document 或是利用 listener 去观察 Document 的变化并
做些会影响 Document 的操作?若是,仔细检验你的做法,你的做法不对是会
导致把拼音过程的 glyph 当成输入。实际上在 text input 处直接做拼字的
输入法在拼字过程的 glyph,比如 bopomofo,是会进 Document 的,透过
document listener 或客制 Document 来做 filtering 或 validation,稍
不小心就会搞砸。

Links booklink

Contact Us: admin [ a t ] ucptt.com