我有一个文本小部件,其中包含端口(TCP)的数字表示形式。我验证该值,因为最大端口大小为65535。
问题: 该字段最初包含值8001。现在,如果用户双击文本小部件,将选择整个文本。想要输入一个新端口,例如7002。
为了进行验证,在VerifyListener的-verifyText方法中,我使用文本小部件的当前值(8001)和键入的字符(7)。
-> 80017无效
textField.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
String text = ((Text) e.widget).getText();
try {
if(Integer.parseInt(text+e.character) > 65535) {
MessageBox.openError( composite.getShell(),
"Invalid value",
"Invalid value" );
e.doit = false;
}
} catch (Exception e2) {/*ignore*/}
}
});
答案 0 :(得分:0)
好,我做到了。 :)
textField.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
String text = ((Text) e.widget).getText();
try {
/*-------------------------------------------------------------------------*/
String newText = text.substring(0, e.start) + e.text + text.substring(e.end);
/*-------------------------------------------------------------------------*/
if(Integer.parseInt(newText) > 65535) {
MessageBox.openError( composite.getShell(),
"Invalid value",
"Invalid value" );
e.doit = false;
}
} catch (Exception e2) {/*ignore*/}
}
});