问题描述
我只想在 SWT 文本小部件中输入数字。 .
另外,数字必须能够输入多个字符,并且必须允许使用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 将其视为替代方案。总之,Text widget似乎是最好的,我想用它来解决它。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)