2017-11-24 58 views
0

Webページでは、ユーザーが他の言語の文字を入力するのを防ぐために、Microsoft IMEを無効にするようにパスワードフィールドを設定できます。たとえば、中国語または日本語の文字はそのフィールドに入力できません。javafxパスワードフィールドでIMEを抑制する方法

javafxのUIでは、中国語の文字をパスワードのフィールドに入れるのは簡単です。私はパスワードを入力して文字を入力すると、Microsoft IMEを無効にする方法を知っていますか?パスワードフィールドに数字、記号、英字だけを入力するだけです。

+0

使用することは、セキュリティが向上します。 –

答えて

1

あなたが本当にパスワードに使用できる文字の範囲を制限したい場合、あなたはこれをテストすることができますが:非ラテン文字を含むパスワードの

Pattern pattern = Pattern.compile("[a-zA-Z0-9\\-\\+]*"); 

PasswordField passwordField = new PasswordField(); 
passwordField.setTextFormatter(new TextFormatter<String>(change -> { 
    if(pattern.matcher(change.getText()).matches()) { 
     return change; 
    } 

    return null; 
})); 
+0

それは完璧な解決策ではありません。 Webページで、入力方法を中国語に変更すると、キーを押すとパスワードも入力されます。入力方法を中国語に変更していないようです。このコードをフィルタとして使用すると、入力メソッドが中国語のときは何も入力できません。 –

+0

これには、別個のKeyEventsキャプチャバッファが必要です。理論的には、シンプルに見えますが、実際には水中の石がたくさんあります.Caps Lockの状態、カーソルの位置... –

関連する問題