我正在尝试获取用户在JPasswordField中输入文本的语言环境。
为此,我正在做下一个:
final JPasswordField passwdField = new JpasswordField();
final InputContext it = InputContext.getInstance();
final JTextArea localeLng = new JTextArea();
...
...(some code)
...
passwdField.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
localeLng.setText(it.getLocale().getLanguage().toUpperCase());
}
});
我有两个键盘布局En和Ru。当我在它们之间切换时,它不会影响localeLng值。这可能是在Ubuntu上使用JRE 7up7 但这完全适用于Windows 7。
那么,根本不存在什么问题呢?
public void keyReleased(KeyEvent e) {
int key = (int)e.getKeyChar();
if(key>122){
localeLng.setText("!");
localeLng.setBackground(Color.RED);
} else {
localeLng.setText("En");
localeLng.setBackground(Color.BLUE);
}
}
答案 0 :(得分:1)
提醒一下,使用Java可以获得一组明确定义的方法和类但不同的实现,这里有许多JVM以及许多提供Java支持的操作系统,可能每个都有自己的实现。
那就是说,this link会回答你的问题。
我还建议让用户决定什么是正确的语言环境,以编程方式获取正确的语言环境可能非常棘手,尤其是在Linux下。