如何检测键盘语言?

时间:2016-10-08 11:04:59

标签: java events keyboard focus

对于下面Java语言的(NetBeans)GUI,

enter image description here

我想自动更改键盘输入语言模式 -

当“K Box”获得焦点时(例如,光标在“K Box”中),

到韩语,

到英语当“E Box”获得焦点时(即光标在“E Box”中)

(仅供参考,通过按右ALT键更改键盘输入语言模式)。

如果无法做到这一点,我想检测它是处于英文输入模式还是处于韩文输入模式。然后我会给用户制作一个告诉当前输入语言模式的标签,这样他们就不需要在英文模式下输入韩文错误。

1 个答案:

答案 0 :(得分:0)

我定义了以下方法并使用它来更改特定组件的键盘语言。代码'ControlEnums.Languages'是我自己的枚举类型,所以你暂时可以忽略它。

public static void setKeyboardLanguage(Component comp, 
    ControlEnums.Languages language) 
{
    try {
        InputContext inCtx  =  comp.getInputContext();
        Character.Subset[] subset = new Character.Subset[1];

        if (language == KOREAN) {
            // for Korean input mode
            subset[0] = Character.UnicodeBlock.HANGUL_SYLLABLES;
        } else {
            // for English input mode
            subset = null;
        }
        inCtx.setCharacterSubsets(subset);
    } catch(Exception e) {
    }
}

我发现上面的方法'setKeyboardLanguage'效果很好。有没有人对我的研究有更好的想法?