Text 如何在SWT文本小部件中输入多个字符?
我只想在SWT文本小部件中输入数字。 此外,数字必须能够输入多个字符,并且必须允许退格、删除键等 为了满足这些条件,我编写了以下代码 (所有代码都使用一种称为Xtend的语言,与Java没有太大区别。) 在下面的代码中,退格不起作用Text 如何在SWT文本小部件中输入多个字符?,text,character,swt,jface,Text,Character,Swt,Jface,我只想在SWT文本小部件中输入数字。 此外,数字必须能够输入多个字符,并且必须允许退格、删除键等 为了满足这些条件,我编写了以下代码 (所有代码都使用一种称为Xtend的语言,与Java没有太大区别。) 在下面的代码中,退格不起作用 new Text(parent, SWT.BORDER) => [ layoutData = new GridData(GridData.FILL_HORIZONTAL) addListener(SWT.Verify, ne
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模型。)
我不想使用StyledText,Spinner认为它是一种替代方法。总之,文本小部件似乎是最好的,我想用它来解决这个问题
谢谢。SWT代码片段显示验证侦听器只允许数字(以及退格、删除)
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;
}
}
}
})