在java swing应用程序中更改IME语言

时间:2012-03-28 08:23:46

标签: java swing io ime

我正在Java(Swing)中构建一个文本编辑器,其中包含一个用于键入文本的EditorPane和一个包含JRadioButtonMenuitems的菜单。喜欢菜单是“语言”,“语言”下的JRadiobuttonMenuitems是“西班牙语”,“日语”,“英语”等场景,当用户点击并选择任何JRadioButtonMenuItem时系统必须根据所选语言更改其IME。 就像用户单击并选择日语选项一样,编辑器必须将IME更改为日语以获取当前进程,并允许用户以相应的语言输入文本。

我安装了正确的IME。手动我可以改变IME并能够在swing组件中写入。但我的问题是如何以编程方式加载IME。

目前我正在windowsXP上构建此应用程序,但希望此应用程序更改每个操作系统的IME语言。

我有谷歌但没有找到任何相关信息来改变IME。

由于

1 个答案:

答案 0 :(得分:3)

通过获取InputContext实例并覆盖JEditorPane的getInputContext方法,可以为JEditorPane更改IME语言。

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上试过这个。它的工作非常好。