3
나는이 범위에 속하는 문자들만 받아 들여야하는 SWT 텍스트를 가지고있다 : [a-z] [A-Z] [0-9]. 이것을 위해 Text에 KeyListener를 추가했으며 아래에는 코드가 있습니다.SWT 텍스트의 붙여 넣은 텍스트에 키 수신기를 통해 특수 문자가 있는지 확인할 수 있습니까?
Pattern pattern = Pattern.compile("[a-zA-Z0-9]+");
@Override
public void keyPressed(KeyEvent event)
{
String enteredCharacterInStr = String.valueOf(event.character);
boolean isAlphaNumeric = pattern.matcher(enteredCharacterInStr).find();
if(event.keyCode == SWT.ARROW_LEFT ||
event.keyCode == SWT.ARROW_RIGHT ||
event.keyCode == SWT.BS ||
event.keyCode == SWT.DEL)
{
event.doit = true;
}
else if(isAlphaNumeric)
{
event.doit = true;
}
else if(event.stateMask == SWT.CTRL && (event.keyCode == 'a' ||
event.keyCode == 'c' ||
event.keyCode == 'v' ||
event.keyCode == 'x'))
{
event.doit = true;
}
else
{
event.doit = false;
}
}
위의 코드는 특수 문자를 입력하지 않아도 작동하지만 사용자가 텍스트에 특수 문자 및 붙여 넣기가 포함 된 텍스트를 복사하면 실패합니다.
KeyListener를 통해이를 달성 할 수 있습니까?
text.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent event) {
char[] charArray = event.text.toCharArray();
for (char testChar : charArray) {
if (testChar <= '0' || testChar >= '9') {
event.doit = false;
return;
}
}
}
});
을 그리고이 예는 모든 특수 문자 필터링 :
당신이 특수를 필터링 하시겠습니까을 특수 문자가 포함되어있는 경우 붙여 넣은 텍스트 삽입을 중지 하시겠습니까? –