text - 如何在 SWT 文本小部件中输入多个字符?
问题描述
我只想在 SWT Text 小部件中输入数字。.
此外,数字必须能够输入多个字符,并且必须允许使用 BACKSPACE、DELETE 键等。
我编写了以下代码来满足这些条件。
(所有代码都使用一种称为 Xtend 的语言,与 Java 没有太大区别。)
在下面的代码中,BACKSPACE 不起作用。
new Text(parent, SWT.BORDER) => [
layoutData = new GridData(GridData.FILL_HORIZONTAL)
addListener(SWT.Verify, new Listener() {
override handleEvent(Event e) {
var Text sourceText = e.widget as Text
val oldText = sourceText.getText();
val newText = oldText.substring(0, e.start) + e.text
oldText.substring(e.end)
System.out.println(oldText + " -> " + newText);
wizard.request.startRowIndex = Integer.parseInt(newText)
validate();
}
})
]
当输入的字符被放入模型时,下面的代码只包含最后一个韩文字符。(ModelObject 是我写的一个 int 模型。)
new Text(parent, SWT.BORDER) => [
layoutData = new GridData(GridData.FILL_HORIZONTAL)
addListener(makeFlag(SWT.FocusOut, SWT.Verify), new Listener() {
override handleEvent(Event event) {
event.doit = switch event.character {
case Character.isDigit(event.character),
case BACKSPACE,
case DELETE: {
ModelObject = Character.getNumericValue(event.character)
validate()
true
}
default: {
false;
}
}
}
})
我不想使用 StyledText,Spinner 认为它是一种替代方法。总之,文本小部件似乎是最好的,我想用它来解决它。
谢谢你。
解决方案
推荐阅读
- python - 如何在 Python 中从现有的超类类型对象实例化子类类型变量
- excel - 运行时出现逗号循环生成错误的文本到列,但不在调试中
- python - 如何根据python中的两个类别获取列的最后一个值?
- c - NodeMCU client.connect 为本地托管的解析 api 返回 0?
- reactjs - 无法运行 expo 开发者工具
- php - 为什么我没有收到带有输入到本地托管(非非法)网络钓鱼站点的凭据的电子邮件?
- jquery - 在 asp .net core 中的某些字段上搜索页面的最佳方式
- reactjs - React Redux,存储调度不触发组件更新
- tensorflow - 如何将保存的 .pb 模型转换为 TFLITE?
- azure - 如何使 Docker 容器可用于 Azure Pipelines 中的任务?