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版では残念ながら何も起こらないはずです。 {{category2 プログラミング言語,Java}}