1

我正在用Java(Swing)构建一个文本编辑器,它有一个EditorPane来输入文本和一个包含JRadioButtonMenuitems的菜单。像 Menu 是“Language”,“Language”下的 JRadiobuttonMenuitems 是“Spanish”、“Japanese”、“English”等,当用户单击并选择任何 JRadioButtonMenuItem 时,系统必须根据所选语言更改其 IME。就像用户单击并选择日语选项一样,编辑器必须将当前进程的 IME 更改为日语,并允许用户以各自的语言输入文本。

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

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

我已经谷歌了它,但没有找到任何相关信息来更改 IME。

谢谢

4

1 回答 1

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 上试过了。它工作得很好。

于 2012-03-29T12:02:22.887 回答