Q
SWT文本驗證
6
A
回答
3
您可以使用文本控件註冊ModifyListener並使用它來驗證數字。
txt.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent event) {
String txt = ((Text) event.getSource()).getText();
try {
int num = Integer.parseInt(txt);
// Checks on num
} catch (NumberFormatException e) {
// Show error
}
}
});
您也可以使用addVerifyListener來防止輸入某些字符。在傳入該方法的事件中,有一個「doit」字段。如果將其設置爲false,則會阻止當前的編輯。
11
使用VerifyListener
,因爲這將處理粘貼,退格,更換.....
例如在SWT
text.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
final String oldS = text.getText();
final String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);
try {
BigDecimal bd = new BigDecimal(newS);
// value is decimal
// Test value range
} catch (final NumberFormatException numberFormatException) {
// value is not decimal
e.doit = false;
}
}
});
3
整數驗證
text = new Text(this, SWT.BORDER);
text.setLayoutData(gridData);
s=text.getText();
this.setLayout(new GridLayout());
text.addListener(SWT.Verify, new Listener() {
public void handleEvent(Event e) {
String string = e.text;
char[] chars = new char[string.length()];
string.getChars(0, chars.length, chars, 0);
for (int i = 0; i < chars.length; i++) {
if (!('0' <= chars[i] && chars[i] <= '9')) {
e.doit = false;
return;
}
}
}
});
0
試試下面的代碼:
/**
* Verify listener for Text
*/
private VerifyListener verfyTextListener = new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
String string = e.text;
Matcher matcher = Pattern.compile("[0-9]*+$").matcher(string);
if (!matcher.matches()) {
e.doit = false;
return;
}
}
};
0
如果你只想讓整數值,你可以使用一個微調,而不是文本的領域。
對於Double值的驗證,您必須考慮像E這樣的字符可能包含在雙精度中,並且部分輸入如「4e-」在鍵入時應該是有效的。這種部分表達式將會給Double.parseDouble(partialExpression)
另請參閱我的回答NumberFormatException異常在以下相關問題: How to set a Mask to a SWT Text to only allow Decimals
0
1.創建一個utill類實現驗證聽衆
2.override verifytext方法
3.實現你的邏輯
4.create utill類的對象,你要使用驗證監聽器(文本)
5.text.addverifylistener(utillclassobject)
例子: - 1. utill類: -
public class UtillVerifyListener implements VerifyListener {
@Override
public void verifyText(VerifyEvent e) {
// Get the source widget
Text source = (Text) e.getSource();
// Get the text
final String oldS = source.getText();
final String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);
try {
BigDecimal bd = new BigDecimal(newS);
// value is decimal
// Test value range
} catch (final NumberFormatException numberFormatException) {
// value is not decimal
e.doit = false;
}
}
2。在其他類使用verifylistener的
public class TestVerifyListenerOne {
public void createContents(Composite parent){
UtillVerifyListener listener=new UtillVerifyListener();
textOne = new Text(composite, SWT.BORDER);
textOne .setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
textOne .addVerifyListener(listener)
textTwo = new Text(composite, SWT.BORDER);
textTwo .setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
textTwo .addVerifyListener(listener);
}}
0
text.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
Text text = (Text) e.getSource();
final String oldS = text.getText();
String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);
boolean isValid = true;
try {
if(! "".equals(newS)){
Float.parseFloat(newS);
}
} catch (NumberFormatException ex) {
isValid = false;
}
e.doit = isValid;
}
});
相關問題
- 1. 如何驗證SWT表單?
- 2. 如何驗證輸入的SWT小部件(文本)
- 3. 需要驗證SWT/AWT中的無效xml字符文本框
- 4. 文本驗證
- 5. Android文本驗證
- 6. 驗證文本框
- 7. Devexpress:aspxtextbox文本驗證
- 8. 文本框驗證
- 9. 文本框驗證
- 10. 驗證文本域
- 11. 驗證文本框
- 12. Java SWT用戶輸入驗證
- 13. Eclipse SWT - WizardPage小部件驗證
- 14. SWT小工具輸入驗證
- 15. 驗證SWT令牌REST WCF服務
- 16. 本地化文本驗證
- 17. 文本文件驗證
- 18. SWT光標文本
- 19. 驗證SWT中的文本,並試圖清除它,但不起作用
- 20. 如何結合並驗證swt對話框的兩個文本字段?
- 21. 輸入文本框驗證
- 22. C# - 文本框驗證
- 23. 驗證文本框wpf
- 24. 驗證文本框Javascript
- 25. 驗證textangular文本長度
- 26. jQuery驗證文本框valuess
- 27. Toolstripbutton不驗證文本框
- 28. 驗證編輯文本
- 29. asp.net-MVC文本框驗證
- 30. 驗證文本框在MVC
部分表達式,如 「4E-」 應該被允許可以進入 「4E-3」 – Stefan 2016-03-17 18:13:50