java - 如何在验证侦听器事件 verifyText(...) 上获取选定的文本小部件文本
问题描述
我有一个文本小部件,其中包含端口(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*/}
}
});
解决方案
好的,我做到了。:)
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*/}
}
});
推荐阅读
- haskell - 类型为 [Int] -> 属性的 QuickCheck 属性
- kubernetes - k8s 集群中主节点和 etcd 故障的影响
- python - 包含 html 格式数据的 csv 中的行读取问题
- express - 跳过和限制猫鼬模型子文档/数组
- c# - 如何将文件上传到服务器?
- sql - 如何获取每位员工每天的第一个和最后一个数据
- android-layout - 我想使用带有静态页脚的 View Pager 来实现图片库。在页脚我有 3 个按钮下载、分享和收藏
- google-calendar-api - 从服务帐户模拟 gCal 用户
- jquery - 渲染流动图 IronPDF
- flutter - SQLite 插入通过 json_serializable 生成的 json 失败