【问题标题】:Changing IME Language in java swing application在 java swing 应用程序中更改 IME 语言
【发布时间】:2012-04-11 19:38:24
【问题描述】:

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

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

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

我已经google了,但没有找到任何相关信息来更改输入法。

谢谢

【问题讨论】:

  • 有什么办法吗?我发现InputMehod接口可能是用来改变语言输入法的,但不知道怎么做。

标签: java swing io ime


【解决方案1】:

可以通过获取 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 上试过了。它工作得很好。

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多