1

テキストを入力するための EditorPane と JRadioButtonMenuitems を含むメニューを持つ Java(Swing) でテキスト エディターを構築しています。Menu が「Language」で、「Language」の下の JRadiobuttonMenuitem が「Spanish」、「Japanese」、「English」などのように、ユーザーが JRadioButtonMenuItem をクリックして選択すると、システムは選択した言語に従って IME を変更する必要があります。ユーザーがクリックして日本語オプションを選択した場合と同様に、エディターは現在のプロセスの IME を日本語に変更し、ユーザーがそれぞれの言語でテキストを入力できるようにする必要があります。

適切な IME がインストールされています。手動で IME を変更し、swing コンポーネントに書き込むことができます。しかし、私の問題は、プログラムで IME をロードする方法です。

現在、私はこのアプリケーションを WindowsXP で構築していますが、このアプリケーションでオペレーティング システムごとに IME 言語を変更したいと考えています。

Google で検索しましたが、IME を変更するための関連情報は見つかりませんでした。

ありがとう

4

1 に答える 1

3

JEdi​​torPane の IME 言語は、InputContext インスタンスを取得し、JEditorPane の getInputContext メソッドをオーバーライドすることで変更できます。

final InputContext context = InputContext.getInstance();

jEditorPaneMain = new javax.swing.JEditorPane()
   {
       @Override
        public InputContext getInputContext() {
             return context;
        }
   };

そして、日本語の JRadioButtonMenuItem のクリックのような任意の言語を選択すると、ActionListener が追加されます

jRadioButtonMenuItemJapanese.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButtonMenuItemJapaneseActionPerformed(evt);
            }
        }); 

イベントハンドラー内で次のことを行います。

private void jRadioButtonMenuItemJapaneseActionPerformed(java.awt.event.ActionEvent evt) {                                                            
      context.selectInputMethod(Locale.JAPANESE);

}

Windows XPでこれを試しました。その動作は完全に正常です。

于 2012-03-29T12:02:22.887 に答える