Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在Windows上获取已安装的文本输入语言_Java - Fatal编程技术网

Java:在Windows上获取已安装的文本输入语言

Java:在Windows上获取已安装的文本输入语言,java,Java,我试图从Java应用程序中找出Windows上安装的输入语言。您可以从控制面板->区域和语言->更改键盘(按钮)->常规->已安装服务(底部面板)中手动解决此问题 背景是,在应用程序中,我使用以下调用强制Locale.US- Component component = getAWTComponent(); component.getInputContext().selectInputMethod(Locale.US) 但在一些主机上并没有安装美国键盘语言(比如英国的一个系统)。我想确认该语

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

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

 Component component = getAWTComponent();
 component.getInputContext().selectInputMethod(Locale.US)
但在一些主机上并没有安装美国键盘语言(比如英国的一个系统)。我想确认该语言不可用,并抛出一个错误或其他东西


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

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

然后,您可以在扫描仪中使用它以UniCode格式转换输入字符集:

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

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

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

然后,您可以在扫描仪中使用它以UniCode格式转换输入字符集:

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

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

破坏默认键盘布局是必须非常小心的事情。如果你这么做了,你应该给用户一个选择他们想要的布局的选项,而不是强迫每个人都使用某个布局

想象一下,如果我写了一个应用程序,试图强迫你使用德语键盘,你会有什么反应

也就是说,当
Locale.US
不可用时,API将返回到有效的键盘布局。执行该操作的代码隐藏在


使用反射,您应该能够复制代码中检查某个区域设置是否受支持的部分。

要想搞乱默认键盘布局,必须非常小心。如果你这么做了,你应该给用户一个选择他们想要的布局的选项,而不是强迫每个人都使用某个布局

想象一下,如果我写了一个应用程序,试图强迫你使用德语键盘,你会有什么反应

也就是说,当
Locale.US
不可用时,API将返回到有效的键盘布局。执行该操作的代码隐藏在


使用反射,您应该能够复制代码中检查某个区域设置是否受支持的部分。

获取对您有用的
default
区域设置吗?当然,这可以通过java来实现。@vikingsteve不幸的是,没有。另外(如果我在这里错了,请纠正我)java中存在区域设置并不意味着系统上安装了相应的输入服务。好的,这同样适用于
GetAvailableCales
(根据user2504380的回答)获取
默认值
区域设置对您有用吗?当然,这可以通过java来实现。@vikingsteve不幸的是,没有。另外(如果我在这里错了,请纠正我)java中存在区域设置并不意味着系统上安装了相应的输入服务。好的,这同样适用于
GetAvailableCales
(根据user2504380的回答)正如对@vikingsteve所提到的,这不会有用。我认为这将返回Java支持的区域设置列表。与安装的文本输入语言无关。如@vikingsteve所述,这没有任何用处。我认为这将返回Java支持的区域设置列表。不必对安装的文本输入语言执行任何操作。很抱歉,我不确定我是否理解。它将返回一个正在使用的字符集。这对我想要实现的目标有什么帮助?@Aarondigula我说的是问题的第一部分:
我试图从Java应用程序中找出Windows上安装的输入语言。
这有助于找到使用的键盘“输入语言”指的是“键盘布局”。它与区域设置完全无关(您可以使用区域设置来查找键盘布局)。但是Java知道的区域设置与操作系统安装的键盘布局无关。很抱歉,我不确定我是否理解。它将返回一个正在使用的字符集。这对我想要实现的目标有什么帮助?@Aarondigula我说的是问题的第一部分:
我试图从Java应用程序中找出Windows上安装的输入语言。
这有助于找到使用的键盘“输入语言”指的是“键盘布局”。它与区域设置完全无关(您可以使用区域设置来查找键盘布局)。但是Java知道的区域设置与操作系统安装的键盘布局无关。谢谢Aaron。这看起来很有希望。我想试试。我也接受你对改变地区的担心。但我正在使用的应用程序仅用于内部目的,用于测试我们开发的其他一些应用程序。所以我可以承受风险-:)谢谢亚伦。这看起来很有希望。我想试试。我也接受你对改变地区的担心。但我正在使用的应用程序仅用于内部目的,用于测试我们开发的其他一些应用程序。所以我可以承受风险-:)
    static public void main(String[]args) {
        Locale al[] = DateFormat.getAvailableLocales();
        for (Locale l : al) {
            System.out.println(l);
        }
    }