Dov*_*Dov 1 java swing locale jtextfield
每个操作系统都有不同的方案来更改键盘或鼠标的语言.Java中是否有任何API支持以编程方式更改语言?
我想要的是一个带有两个JTextField对象的翻译器.如果我输入一个,我会自动输入英文,如果我输入另一个,我想自动切换到另一种语言.如果该语言是日语或中文,我希望操作系统在进入该组件时自动切换到该语言,而无需每次都手动切换.下面是一些使用Locale和InputContext的示例代码.它表明它成功设置了上下文,但我输入并且英语出来了.与我手动切换到日语相比,键入将导致日语字符.我做错了什么?
public class TestLocale extends JFrame {
public TestLocale() {
super("TestLocale");
setSize(600,600);
JTextField a = new JTextField("English");
JTextField b = new JTextField("Japanese");
Locale loc =Locale.JAPANESE;
System.out.println("Script: " + loc.getScript());
System.out.println("Language: " + loc.getLanguage());
b.setLocale(loc);
b.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
InputContext c = InputContext.getInstance();
boolean b = c.selectInputMethod(Locale.JAPANESE);
System.out.println("Trying to request Japanese: " + b);
}
} );
add(BorderLayout.NORTH, a);
add(BorderLayout.SOUTH, b);
setVisible(true);
}
public static void main(String[] a) {
TestLocale t = new TestLocale();
}
}
Run Code Online (Sandbox Code Playgroud)
由于日语是多字节和更复杂的,我试过希腊语.我可以在这里切换到希腊语:ασδκφξησκ(手动)
但是当我选择希腊语输入上下文时,没有任何反应:
b.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
InputContext c = InputContext.getInstance();
boolean b = c.selectInputMethod(new Locale("el", "GR"));
System.out.println("Trying to request Greek: " + b);
}
} );
Run Code Online (Sandbox Code Playgroud)
Java中是否有任何API支持以编程方式更改语言?
不适用于操作系统......
实际上,在Unix/Linux系统中,语言环境设置由环境变量控制,这样的API将无法实现.Unix/Linux程序无法更改其父shell的环境变量.即使找到系统/用户/应用程序放置语言环境变量设置的"rc"文件也是不切实际的.
您可能希望的最好的是一系列特定于操作系统的命令,这些命令将更改操作系统的默认语言环境设置,或与窗口管理器交互.请记住,默认语言环境设置(在许多操作系统上)的更改只会在用户的shell重新启动时传播,等等.
另一方面,Java程序可以控制它自己使用的输入方法将键盘事件转换为字符.例如,请参阅InputContext.selectInputMethod
.
java.awt.im
包摘要javadoc中有更多文档.
我的问题专门询问我是否可以切换一个JTextField的输入法.... InputContext似乎没有这样做......
框架文档(参见javadoc链接)说:
" 默认情况下,每个Window实例创建一个InputContext实例,并且此输入上下文由窗口包含层次结构中的所有组件共享.如有必要,组件可以创建私有输入上下文.没有自己的输入上下文的组件使用它的父级使用的一个.输入上下文最多有一个当前客户端组件,当前具有焦点的组件.当切换到新的客户端组件时,输入上下文调用其endComposition方法提交或取消之前的组合文本客户组件. "
归档时间: |
|
查看次数: |
1126 次 |
最近记录: |