2

我试图弄清楚从 Java 应用程序安装在 Windows 上的输入语言是什么。您可以从控制面板->区域和语言->更改键盘(按钮)->常规->已安装的服务(底部面板)手动解决此问题。

背景是在应用程序中,我使用以下调用强制 Locale.US -

 Component component = getAWTComponent();
 component.getInputContext().selectInputMethod(Locale.US)

但是在某些主机上没有安装美国键盘语言(比如英国的系统)。我想验证该语言不可用并抛出错误或其他东西。

此外,是否可以从 Java 安装此类服务(可能是牵强的..)?

4

3 回答 3

1

弄乱默认键盘布局是一件应该非常小心的事情。如果你这样做了,你应该给用户一个选项来选择他们想要的布局,而不是强制每个人都使用某种布局。

想象一下,如果我写了一个应用程序并试图强迫你使用德语键盘,你的反应。

Locale.US也就是说,API 将在不可用时回退到有效的键盘布局。执行此操作的代码隐藏在sun.awt.im.InputContext.selectInputMethod()

使用反射,您应该能够复制检查是否支持某些语言环境的代码部分。

于 2013-06-21T13:01:23.140 回答
-1

Java 可以找到您的默认字符集:

public final static Charset CHARSET_SYSTEM =  
          Charset.forName(System.getProperties().get("sun.jnu.encoding").toString());

然后您可以在 Scanner 中使用它来转换 UniCode 中的输入字符集:

Scanner scan = null;
final  void defineScan(Charset charsetCanBeNull) {
    scan = new Scanner(System.in, (null == charsetCanBeNull) 
           ? charset 
           : charsetCanBeNull);
}

然后你可以使用 Scanner.methods(..)

于 2013-06-21T12:38:20.847 回答
-1
    static public void main(String[]args) {
        Locale al[] = DateFormat.getAvailableLocales();
        for (Locale l : al) {
            System.out.println(l);
        }
    }
于 2013-06-21T12:39:06.287 回答