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. 防止用戶在HTML5輸入文本字段中輸入非數字
- 2. 防止用戶在文本框中輸入某些字符
- 3. 防止用JavaScript輸入中文字符
- 4. 阻止用戶在輸入字段中輸入文字
- 5. 防止特殊字符輸入到HTML文本字段
- 6. 如何防止用戶輸入空格到欄文本字段
- 7. 如何防止用戶在輸入字段內輸入無效字符
- 8. 防止用戶輸入某些字符?
- 9. 如何防止用戶使用jQuery在文本框中輸入特定字符?
- 10. 防止用戶寫入本地字符
- 11. 防止在輸入字段中提交沒有文字
- 12. 如何防止用戶使用JQuery將文本輸入到表單字段中?
- 13. Angular 2阻止用戶將某些字符輸入到文本輸入字段
- 14. 如何防止用戶在表單的文本字段中輸入特殊字符?
- 15. 防止用戶在DataWindow列中輸入特定字符
- 16. 防止用戶在文本字段中輸入字符,允許帶磁條讀卡器(MSR)僅
- 17. 如何防止用戶刪除文本輸入中的前三個字符?
- 18. 防止在文本字段中創建空白字符?
- 19. 用戶在文本字段中輸入的數字的數值
- 20. 如何防止插入值大於用戶在文本字段中輸入的數字
- 21. 在輸入一定數量的字符後,禁止用戶將文本輸入到textarea字段中
- 22. 如何限制用戶在swt文本框中輸入一些字符
- 23. 防止文本在輸入字段下打包
- 24. 解碼輸入文本字段中的中文字符
- 25. 防止用戶粘貼到字段中
- 26. 防止在輸入字符時繼續在文本框中鍵入
- 27. 居中佔位符並在文本字段中輸入文本
- 28. 在文本字段中輸入時被忽略的字符
- 29. 處理Angular 2表單驗證。如何防止用戶在輸入文本框中輸入特殊字符?
- 30. 防止用戶在文本框中輸入更大的值
感謝您的解決方案 - 你甚至可以美化這個使用SWT.BS的鍵代碼8 – Gregor 2012-09-04 09:22:24