2017-11-24 14 views
0

웹 페이지에서 사용자가 다른 언어 문자를 입력하지 못하도록 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

완벽한 솔루션은 아닙니다. 웹 페이지에서 입력 방법을 중국어로 변경하면 키를 누를 때도 암호가 입력됩니다. 입력 방법을 중국어로 변경하지 않은 것처럼 보입니다. 이 코드를 필터로 사용하면 입력 방법이 중국어 인 경우 아무 것도 입력 할 수 없습니다. –

+0

별도의 KeyEvents 캡처 버퍼가 필요합니다. 이론 상으로는 간단 해 보이지만 사실 수중 스톤이 많이 있습니다 - Caps Lock 상태, 커서 위치 ... –