ユーザーが 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 の 2 つのキーボード レイアウトがあります。それらを切り替えても、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);
}
}