我正在尝试获取用户在 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 值。这可能在带有 JRE 7up7 的 Ubuntu 上。
但这在 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);
}
}