トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

JavaでのInputMethodの制御について

http://java-house.jp/ml/archive/j-h-b/024682.html#body
抜粋

Java IMFでは「IMを On/Offする」という概念はありません。
(中略)
言語を日本語に切り替えれば日本語IMがOnになるし、
中国語に切り替えれば中国語IMがOnになるという考え方です。英語を選択すれば IM は Offになるわけです。

それならば、Windows上のJava2で
InputContext#selectInputMethod(Locale.JAPANESE)
とやれば IM が On になってくれても良さそうですが、そうはなりません。
これは Windows での IMF の実装上の問題です。On/Off の概念のない
Java IMF の仕組みの下で、Windowsの元々持っているOn/Off の仕組みが
動いてしまっていると言うことです。


もうひとつ、InputContext#setCharacterSubsets についてですが、
これは高橋さんが説明されたとおり、いわゆる「入力モード」の指定という
APIではありません。このAPIの正しい意味合いは
「アプリケーションが、この InputContext でユーザーに入力させたい
 文字の種類をInputMethodに通知する」
というものです。これはあくまでアプリケーション側の要望通知に
過ぎないのであって、その要望をどのように実現するかは IM に任されて
います。つまり何も変わらない場合もあるということです。

日本語Windows版のJava2では、高橋さんの示されたようなコードで
IMが On になりますが、これは Windows版の Java IMF の実装コードが
「InputSubset.KANJIが最も入力しやすい状態」は「IM が On になった
状態」であるという判断の元にきちんと実装されているからです。
ちなみに、Solaris版では残念ながら何も起こらないはずです。



[カテゴリ: プログラミング言語 > Java]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2010年11月16日 21時16分14秒