7
A
답변
6
VerifyListener를 사용하고 사용자 입력에 따라 문자를 거부하십시오.
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Test {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
final Text text = new Text(shell, SWT.BORDER);
text.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
// allows cut (CTRL + x)
if (e.text.isEmpty()) {
e.doit = true;
} else if (e.keyCode == SWT.ARROW_LEFT ||
e.keyCode == SWT.ARROW_RIGHT ||
e.keyCode == SWT.BS ||
e.keyCode == SWT.DEL ||
e.keyCode == SWT.CTRL ||
e.keyCode == SWT.SHIFT) {
e.doit = true;
} else {
boolean allow = false;
for (int i = 0; i < e.text.length(); i++) {
char c = e.text.charAt(i);
allow = Character.isDigit(c) || Character.isWhitespace(c);
if (! allow) {
break;
}
}
e.doit = allow;
}
}
});
text.setSize(200, 20);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
0
Swing에서 정확히 수행 할 JFormattedTextField가 있습니다. 하지만 SWT와 비슷한 것은 없다고 생각합니다. JFormattedTextField가 실제로 필요한 경우이를 포함하도록 일부 변경을 수행 할 수 있어야합니다. 또 다른 옵션은 입력 한 후 사용자 입력의 유효성을 검사하는 것입니다.
2
삽입 된 텍스트에 숫자 만 포함되어 있는지 확인하는 텍스트 컨트롤에 VerifyListener
을 설정하십시오.
이것은 키 코드를 사용하는 솔루션보다 훨씬 효과적입니다. 입력에서 작동하기 때문에 붙여 넣기 및 삭제와 같은 작업을 차단하지 않습니다.
예 : 솔루션
text.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
for (int i = 0; i < e.text.length(); i++) {
if (!Character.isDigit(e.text.charAt(i))) {
e.doit = false;
return;
}
}
}
});
관련 문제
- 1. 사용자가 입력란에서 입력하지 못하도록 하시겠습니까?
- 2. MySQL 행을 계산하여 사람들이 문자를 입력하지 못하도록 막으십시오.
- 3. swt의 텍스트 개요
- 4. 키보드에서 문자를 입력하지 않는 방법
- 5. 사용자가 문자를 입력 할 때까지 키를 입력하지 않으시겠습니까?
- 6. 사용자가 미래 날짜를 입력하거나 선택하지 못하도록 막으십시오.
- 7. 사용자가 Excel 인스턴스를 사용하지 못하도록
- 8. 사용자가 SVN에서 파일을 커밋하지 못하도록
- 9. Sharepoint에서 사용자가 기능을 활성화하지 못하도록
- 10. 사용자가 로그를 보지 못하도록 PHP
- 11. 텍스트 필드에 텍스트
- 12. 사용자가 asp.net mvc보기에서 스크립트 태그를 입력하지 못하도록합니다.
- 13. 사용자가 DataGridViewComboBoxCells에 데이터를 입력하지 못하게하려면 어떻게해야합니까?
- 14. 사용자가 모방 한 내용을 입력하지 못하도록하려면 어떻게해야합니까?
- 15. 텍스트 상자가 일부 키를 사용하지 못하도록
- 16. JQuery와 필터 텍스트 상자 나 텍스트 상자에 특정 문자를 입력하지 못하도록하려고
- 17. 입력하지
- 18. Swt의 DirectoryDialog가 대화 상자 하단의 텍스트 필드를 준수하지 않습니다.
- 19. Java에서 입력하지 않고 키보드에서 문자를 가져 오는 쉬운 방법이 있습니까?
- 20. htmlentities가 utf8 문자를 삭제하지 못하도록 방지 ಠ_ಠ
- 21. 사용자가 텍스트 필드에 입력 할 때 동시에 확인합니다.
- 22. 사용자가 텍스트 필드에 쉼표를 삽입하면 mysql에서 데이터가 삭제됩니다.
- 23. PHP : 사용자가 파일에서 텍스트 필드에 입력 한 데이터를 저장하고 검색하려면?
- 24. 사용자가 텍스트 필드에 값 입력을 완료하면 버튼이 표시되어야합니다.
- 25. 사용자가 데이터를 입력하기 전에 텍스트 필드에 텍스트를 표시하는 방법
- 26. 스프라이트의 텍스트 필드에 텍스트 액세스
- 27. SWT의 예외 표시
- 28. 사용자가 비디오 모드로 전환하지 못하도록 제한하십시오.
- 29. 여러 사용자가 추천 시스템을 사용하지 못하도록 막으십시오.
- 30. FB 사용자가 앱을 사용하지 못하도록 차단하십시오.
감사 - 당신도이 끔찍한 솔루션입니다 keyCode가 8 – Gregor
에 대한 SWT.BS를 사용하려면이 옵션을 아름답게 수 있습니다! 붙여 넣기에는 작동하지 않습니다. delete-key에는 작동하지 않습니다. 그 밖의 무엇을 위해 작동하지 않습니까? 말하기 힘듭니다. – Lii
@Lii 그냥 Ctrl + x, Ctrl + V 및 Del 키를 지원하는 솔루션을 업데이트합니다. – ozhan